1 回答

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊
顯然我做了兩個(gè)致命的假設(shè):
控制臺應(yīng)用程序使用 STA。然而這不是真的,似乎默認(rèn)情況下它們是 MTA。我認(rèn)為這個(gè)數(shù)字是因?yàn)樽烂鎽?yīng)用程序必須在 Main 方法中明確聲明 STA。
要進(jìn)行 COM 互操作,您必須使用 STA。我認(rèn)為這是因?yàn)槭褂?STA 是解決網(wǎng)絡(luò)上 E_NOINTERFACE 問題的首選解決方案。但是,據(jù)我所知,某些 COM 可以使用 MTA??磥韺τ?Microsoft.Web.DLL,您需要 MTA。
所以我的解決方案是創(chuàng)建一個(gè)新線程(默認(rèn)情況下將使用 MTA),例如。
public MainWindow()
{
InitializeComponent();
//Do use ThreadPool instead of this...
Thread thread = new Thread(new ThreadStart(() => { GetWebsites(); }));
thread.Start();
}
void GetWebsites()
{
- 1 回答
- 0 關(guān)注
- 257 瀏覽
添加回答
舉報(bào)