我有一個奇怪的小問題,我在SL4應用程序中使用WCF RIA服務。這裏是我得到的按鈕點擊處理程序的代碼:SL4 WCF RIA查詢問題:「完成」在真正完成之前發生?
private void btnTest_Click(object sender, RoutedEventArgs e)
{
LanguageContext context = new LanguageContext();
LoadOperation<Language> op = context.Load(context.GetLanguagesQuery());
op.Completed += (obj, args) =>
{
if (!op.HasError)
{
System.Threading.Thread.Sleep(500);
MessageBox.Show(context.Languages.FirstOrDefault().DisplayName);
}
};
}
請注意,處理程序中有一個Sleep調用。如果沒有這個睡眠調用,我會得到一個異常(向服務器發送請求時發生傳輸級錯誤(provider:Shared Memory Provider,錯誤:0 - 沒有進程在管道的另一端)。如果這段代碼位於「Completed」處理程序中,我認爲它實際上完成了它到達那裏的時間。爲什麼它沒有睡眠()?而死?順便說一句,睡眠()不是一個生產的選項,它只是一個問題,sovling工具:)
順便說一下,這是一個在EF模型上作用於SQL Server 2008 R2 DB的域服務...如果這對你很重要。 – 2010-08-13 15:13:43
同樣,如果它很有用,在我的SQL Server上啓用命名管道。這裏是連接字符串:Data Source = .; Initial Catalog = TDS; Integrated Security = True; MultipleActiveResultSets = True – 2010-08-13 15:21:59