我正在閱讀Stephen Cleary的“C#Cookbook中的并發”一書,并且在處理Rx Recipe 5.2向上下文發送通知的章節中,有一種情況是,每當鼠標移動時,我們都需要進行CPU密集型計算。因此,我們有以下示例代碼: private void button3_Click(object sender, EventArgs e) { var uiContext = SynchronizationContext.Current; Trace.WriteLine("UI Thread is " + Environment.CurrentManagedThreadId); Observable.FromEventPattern<MouseEventHandler, MouseEventArgs>( handler => (s, a) => handler(s, a), handler => MouseMove += handler, handler => MouseMove -= handler) .Select(evt => evt.EventArgs.GetPosition(this)) .ObserveOn(Scheduler.Default) .Select(position => { //Complex Calculation Thread.Sleep(100); var result = position.X + position.Y; Trace.WriteLine("Calculated Result " + result + " on thread " + Environment.CurrentManagedThreadId); return result; } ) .ObserveOn(uiContext) .Subscribe(x => textBox1.Text = "Result " + x + "on Thread " + Environment.CurrentManagedThreadId ); }但是,該代碼無法編譯,因為:'MouseEventArgs'不包含GetPosition的定義,并且沒有擴展方法GetPosition接受MouseEventArgs類型的第一個參數。我在這里錯過了什么嗎?編輯:調查更多,我在文檔中看到MouseEventArgs確實有一個GetPosition函數,但是這個MouseEventArgs是在System.Windows.Input命名空間中定義的,而我的代碼中的命名空間是在System.Windows.Forms上,我想知道這是否是問題所在編輯2:進一步調查我發現了一個不同的文檔!其中MouseEventArgs沒有GetPosition!現在我嘗試在代碼中使用System.Windows.Input one,但我的IDE說這個命名空間沒有與第一個文檔相矛盾的MouseEventArgs。
1 回答

犯罪嫌疑人X
TA貢獻2080條經驗 獲得超4個贊
System.Windows.Input
命名空間適用于應用程序,因此您應該堅持使用 。 contains 屬性,該屬性包含相對于觸發事件的控件的鼠標坐標。我認為它等同于.WPF
System.Windows.Forms
MouseEventArgs
Location
GetPosition
- 1 回答
- 0 關注
- 121 瀏覽
添加回答
舉報
0/150
提交
取消