2009-02-13 71 views
0

我在C#中有一個使用DuplexChannelFactory連接到服務器的程序,該服務器可以通過回調從客戶端調用方法,問題是我不知道如何訪問Main線程是從回調方法創建的連接。有沒有辦法做到這一點,通過傳遞一個對象,或者我必須實現一個額外的通信層(BD,文件,無論)?使用回調訪問主線程

希望這沒有太多混亂。

在此先感謝。

回答

0

我不知道我完全理解你的問題,但我會在它採取了刺:

我的問題的理解:

你有一個客戶端和服務器。您的客戶端向服務器發出webservice調用,然後服務器可以在計算任何計算的過程中對客戶進行某種調用。您的基礎設施級別正常,但您現在在回調狀態和原始請求狀態之間進行通信時遇到困難。

我在這裏看到幾個選項,具體取決於您試圖共享的州的性質。 1)如果你試圖共享的狀態不是旋轉的(IE,如果它在你提出請求時已知)並且不是非常大,我認爲最明智的選擇是通過狀態以及web服務調用,以便服務器可以將它傳遞迴回調。 2)如果狀態正在旋轉,你可以通過某種惡意的,但是線程安全的全局機制來提供對它的訪問。也許是惹惱的單身人士,或類似的東西。

3)如果狀態不是旋轉,但很大,您可能需要考慮在發送初始請求之前預先計算服務器的請求。

有很多種技術,其中只有很少的技術,但在問題中確實沒有足夠的信息來給出一個很好的答案。

+0

感謝您的回覆。我真的不能解釋得比我更好(缺乏英語和技術語法),但我最終解決了我的問題,因爲我可以訪問正在創建的CallBack對象。 無論如何,再次感謝。 – user45320 2009-02-13 14:26:08

0

你想要訪問主線程的原因是什麼?你需要更新一個用戶界面,並且只能在主線程上做到這一點?

在這種情況下,請查看System.Windows.Forms.Control.Invoke,它可以將要在UI線程上執行的委託排隊。