トップページ | 全エントリー一覧 | RSS購読

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
トラックバック
トラックバック送信先 :
コメント

STA用のxdoc2txtをMTAから呼び出し

今回は、STAで作られてるdoc2txtを、MTAのスレッドから呼ぶお話。
IISから呼ばれるASP.NETの実行エンジンが、いつもMTAで起動してくれているので。

呼ぶだけなら簡単なので、さくさくっと。


自分でAcitiveXを作ったことがないので、STAとMTAの正確な説明はちょっと苦手。
なので、Wikipediaでも読んでね!


ちなみに、普通にMTAのスレッドから、STAのActiveXを呼ぶとこんな例外が出る。

System.Threading.ThreadStateException

現在のスレッドはシングル スレッド アパートメントでないため、ActiveX コントロール '4fd6bd6e-471a-48a6-8c52-5e8391ecba9f' をインスタンス化できません。


そこで、xdoc2txtを呼ぶスレッドをSTAにしてあげることにする。

一度実行を開始したスレッドのアパートメントは変更できないので、 xdoc2txt用に新しい処理スレッドを作って割り当てる。

というのをヘルパークラスとしてまとめると、以下のような感じ。


本当は、もうちょっと排他処理とか例外処理とか書かないと、使い物にならないんだけど、 今回は習作ということで、シンプルに必要なことだけ。

あとは呼び出すだけ。

これで、エントリポイントのSTAThreadAttribute属性を外しても動くようになりました。

このコードを、Web Service用のプロジェクトに貼り付けても動くよ!
サーバサイドなのに、フォームをnewするコードってどうよ、っていつも思うけど・・・。

スポンサーサイト
トラックバック
トラックバック送信先 :
コメント

プロフィール

とむころり

Author:とむころり
24時間システムエンジニア。研究開発など何でも屋を担当。知的でおもてなし精神に満ちたシステム(サービス)が作りたい。
@tomcat_ch

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

検索フォーム

RSSリンクの表示

リンク

ブロとも申請フォーム

QRコード

QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。