掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VB.NETからExcelをBackgroundWorkerにて、起動するには (ID:147330)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
はじめまして。 VB.NETからExcelを操作する業務アプリを作っているのですが、 1点、どう考えていいのか、分からないところがありました。 以下の考え方って間違えているのでしょうか? ■やりたいこと 業務アプリを立ち上げる際に、backgroundworkerを使って、 別スレッドにて、Excelを起動して、そのインスタンスをグローバルな変数としてアクセスしたい。 こうすることで、Excelが立ち上がる処理を、業務アプリが立ち上がる処理に 重ねることができ、順々に立ち上げるよりも高速に立ち上げることができる。 上記やりたいことは、実験してみたところ、いい感じに動作しました。 何か目に見える不具合が出ているわけではないのですが、 COMの概念から言うと、以下の疑問が出てきます。 ・VB.NETで作ったフォームは、STAで動いている。 ・BackgroundWorkerはMTAである。 ・Officeは、STAである。 ■疑問① 上記の通りだと認識していますが、このとおりだとすると、 MTAのBWからSTAのCOMオブジェクトを生成することになります。 これって、問題ないのでしょうか? 厳密には問題あるけど、これが原因で変な動作をすることはぶっちゃけないでしょう。って感じなのか? ■疑問② 疑問①がOKだったとして、BWで作ったCOMオブジェクトに、 メインスレッドから特別な細工無しでアクセスしていますが、これって問題ないのでしょうか? 厳密には、Invok等を使わないと、いけないとか、あるような気がするのですが。。。 COMについて、調査をしてみたのですが、どんどんディープな世界に入ってしまい、 理解することが難しいです。 知見者の方のご意見を聞かせていただけたら、うれしいです。 よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.