2010-11-22 47 views
1

有沒有人試圖從WPF菜單中改變CallContext的內容? 在我們的應用程序中,我們有一個存儲在callcontext中的環境字符串 - 在服務器上它被轉換爲數據庫連接字符串(使用ILogicalThreadAffinative + .net遠程處理)。CallContext由WPF菜單變更

在客戶端上,可以在環境之間切換,當更改新線程/窗口具有新環境時 - 所有窗口都具有窗口標題中的環境。

問題是,當從MenuItem完成這項工作時,似乎WPF將某個堆棧上的CallContext壓入,然後將其彈回,使其無法更改。

我已經解決了它通過在菜單中插入一個組合框 - 這似乎工作,但不是很好。 有沒有人看到這個,並找到了解決方案?

回答

1

我認爲會發生這種情況是因爲鼠標單擊菜單項會導致將新操作發佈到調度程序隊列,並且CallContext不會在調度程序隊列中的操作之間持續存在。

有關更多信息,請參閱this

+0

我認爲你是對的 - 我也研究過執行上下文。我只是覺得不一致,我可以從窗口中的按鈕和菜單中的組合框中更改callcontext,但不能作爲子菜單中的選擇。我認爲callcontext的使用是它的目的 - 所以我想知道它是否是一個錯誤? – 2010-11-23 08:12:58

+0

我嘗試了一個小樣本,並且我的callcontext正在爲按鈕,組合框和菜單重置。所以callcontext對我來說總是空的,這當然比你所看到的更加一致。 – 2010-11-23 15:06:47

+0

我會再看看它,看看我能想出什麼 - 如果你不能從wpf中改變callcontext,它會把它的一些用處去掉。我的例子從一開始就設置了callcontext,當我嘗試改變它時,發生了問題。 – 2010-12-14 12:56:58