我正在編寫一個WPF應用程序,該應用程序對具有簡單需求的API具有可選的依賴關係;它必須在沒有STAThread屬性的線程上初始化/使用。當然,WPF需要STA來讓所有事情都變得簡單。使用WPF(其中需要STAThread)與不能與STAThread一起使用的API
在這種情況下,無論如何WPF都是必需的。僅當用戶選擇在應用程序中啓用此功能時,才需要此第三方API。這意味着一旦調用其他API,WPF應用程序就已經運行。
如果你不用[STAThread]來修飾你的主要方法,它是否會自動成爲MTA線程?在這種情況下,這是否意味着我可以創建一個新的MTA線程並使用其上的其他API?
如果這可行,那麼我猜這個API的任何事件都可以使用Dispatcher與WPF應用程序交互(用於引發需要在UI中顯示的事件等)。然而,是否有一種簡單的方法可以讓我的WPF應用程序「調用」MTA線程上的功能來進行API調用?我想我的STA線程(WPF應用程序)不能只是「伸手」到MTA線程並執行API調用?我想我的STA線程(WPF應用程序)不能僅僅「伸手」MTA線程並執行API調用?
這裏有這麼多的混淆的可能性,我會喜歡一些關於如何設計這樣的輸入的輸入!
謝謝!
[編輯7月8日]
歐凱,我有一些概念混淆在上面。線程模型當然是爲PROCESS設置的,而不是爲每個線程設置的,並且此第三方API無法使用STA進程。
目前,我從這個混亂中看到的唯一方法是編寫一個與此API通信的服務,然後使用命名管道與此服務進行通信。這根本不是微不足道的,一個醜陋的醜陋解決方法,但第三方API不受我控制。這就是人生。 :|
謝謝馬克 - 我會試試這個。外部API是一個電話系統,其中功能/事件需要一些時間(而不是幾秒鐘,但明顯)執行,所以這看起來像一個很好的計劃。 – 2009-06-23 08:29:25