Visual Studio Tools for Office で重い処理する場合について

VSTO に慣れていないので、色々とまとめたり検証したりしていたら、有識者各位から素敵な突っ込みを多々頂いたので纏めておきます
0
Daichi @normalian

VSTO を Windows XP で動かすためにはランタイムと言語パックが必要なことは分かったんだけど、Vista 以降だとどうなってるんだろう

2012-04-04 14:44:34
Daichi @normalian

ふとこんなものを眺めるなど http://t.co/ZfxkNCiw

2012-04-05 13:33:20
Daichi @normalian

ふるいなー、もはや

2012-04-05 13:33:52
Daichi @normalian

VSTO では MVVM できない感じですかね

2012-04-05 14:49:08
Daichi @normalian

Ribbon.xml をエクスポートしたものの、どう修正したらいいか分からないw

2012-04-05 14:56:06
Hiroaki SHIBUKI @hidori

@normalian VSTO に MVVM と関係するところなんてあったっけ??

2012-04-05 15:51:49
Daichi @normalian

@hidori 他のPL技術が MVVM が多いので VSTO でも ViewModel 的なものを作りたくなったりするのですが、ひたすらコードビハインドになっちゃうなぁと思ったりでして

2012-04-05 15:53:26
Hiroaki SHIBUKI @hidori

@normalian 所詮 Office のオートメーションモデルを .NET なアドインからこねこねなわけだから、コードビハインドちゅーかなんちゅーか。

2012-04-05 15:55:17
Daichi @normalian

@hidori 仰る通りだなぁと、実装しながらしみじみ感じております(`・ω・´)ゞ

2012-04-05 15:57:24
Hiroaki SHIBUKI @hidori

@normalian オートメーションモデルの「モデル」と MVVM の「モデル」を重ねて見ちゃダメだよ。おなじ「モデル」と呼ばれるものでも、そもそもの目的がぜんぜん違うから。

2012-04-05 16:02:49
Hiroaki SHIBUKI @hidori

@normalian 結局、まるで無縁のモノ同士を「つなぐ」ことになるから、つなぎ目は自力で抽象化するとかの別の努力しないとダメだよん。

2012-04-05 16:03:37
Hiroaki SHIBUKI @hidori

@normalian VBA 向けに作られた Office オートメーションモデルが最初にありきだから、そなっちゃったんでしょうねぇ>VSTO から見たアプリケーションモデル

2012-04-05 16:07:32
Daichi @normalian

その通りすぎる事態でございますわん

2012-04-05 16:07:40
Daichi @normalian

なるほどーーーー RT @hidori: normalian VBA 向けに作られた Office オートメーションモデルが最初にありきだから、そなっちゃったんでしょうねぇ>VSTO から見たアプリケーションモデル

2012-04-05 16:07:57
Hiroaki SHIBUKI @hidori

割と普通の人が結構シンドいことになっているぽい (^^;;;

2012-04-05 16:08:17
Daichi @normalian

ktkr RT @kamebuchi: VSTOからただのWPFアプリ起動すればいいと思うよ!('(゚∀゚∩

2012-04-05 16:19:26
Daichi @normalian

VSTO で Excel さんに頑張らせる処理がとっても重いので、バック側に処理を投げたいけど BackgroundWorker とか使うとかえってハマるのが分かっててどうしたものか悩んでる。STA 属性を振るにしろ、VSTOのエントリポイントってどこだろうか(汗

2012-04-06 15:48:20
Daichi @normalian

なるほど! RT @nakawankuma: normalian エントリポイントと言うよりWebサービスに投げるような形がべたー ★今週末は大阪勉強会!きてね! http://t.co/3UHbotVr

2012-04-06 15:49:53
++C++; // 管理人: 岩永 @ufcpp

@normalian STAじゃないせい?同期コンテキスト持ってないのが原因でなく?

2012-04-06 16:28:33
Daichi @normalian

@ufcpp 同期コンテキストとかは全然弄って無いのでわかっとらんです。Excel の行数多くて処理中に UI がとまっちゃうことが多いので、BackgroundWorker でも使おうと思ったものの、スレッドまたぎでホゲるなぁと

2012-04-06 16:50:23
++C++; // 管理人: 岩永 @ufcpp

@normalian こないだ見せてもらったURLでは、同期コンテキストないからって書いてあったような。BackgroundWorkerが自動でUIスレッドに処理もどすためには、SynchronizationContext.Current!=nullが必要。

2012-04-06 17:07:26
++C++; // 管理人: 岩永 @ufcpp

@normalian こないだのURLで、SynchronizationContext.SetCurrent()とかしてたでしょ、確か。

2012-04-06 17:07:48
Hiroaki SHIBUKI @hidori

@normalian STA で初期化するべきは VSTO アドインのコンテキストじゃなくて、「重たい処理」を実行するワーカースレッドの方。

2012-04-06 17:10:44
Hiroaki SHIBUKI @hidori

@normalian VSTO アドインのコンテキストは、そのアドインをホストしている Office アプリケーションのもの=起動済みなので、スレッディングモデルを変更することは出来ません。

2012-04-06 17:12:14