我有一個客戶端 - 服務器應用程序。他們與.NET Remoting (4.0)互相溝通。服務器是服務,客戶端是WPF UI應用程序。有時調用服務器在UI線程上執行。這是不好的做法,因爲如果延遲發生,UI會凍結。我想避免這種如何捕獲.net遠程調用並檢查客戶端的線程?
所以我想補充一個全球性的驗證(例如,在調試模式)每個遠程調用:
[Conditional("DEBUG")]
public static void CheckNotUIThread()
{
if (System.Windows.Application.Current.Dispatcher.CheckAccess())
throw new InvalidOperationException("Remoting call on UI thread");
}
所以我想在客戶端在哪裏可以我趕上遠程調用爲了驗證線程?
編輯:
的對象服務器返回特別是所有從MarshalByRefObject的。其他對象是POCO或其組合,標記爲[可序列化]。
爲什麼你在一個WPF項目中使用Remoteing,你在鏈接的頁面的第一行看到了大的粗體文本嗎? 「***本主題特定於遺留技術,爲保持與現有應用程序的向後兼容性而保留,不建議用於新開發。***」編輯:在閱讀您對antistar答案的回覆之後,您看起來像是在編寫新的客戶端爲現有的應用程序。 –
是的,我看到了。我把這件事告訴了我們的建築師很多時間。答案 - 目前系統很大,沒有時間將它移動到WCF。是的,我們只有服務器API,並且我們使用該API開發WPF UI客戶端。 – stukselbax