我有一個計算線程函數,它使用Invoke從其他線程調用消息函數,我希望計算線程從該消息函數中獲取value(value的類型,如整數)。我怎樣才能做到這一點?C#線程中調用函數的返回值
的問題是,我的invoke(...)後,仍然得到變量x的原值和我預計的15
delegate void mes_del(object param);
void MyThreadFunc()
{
...
int x = 5;
object [] parms = new object []{x};
Invoke(new mes_del(MessageFunc), (object)parms);
...
}
void MessageFunc(object result)
{
int res = 15;
(result as object[])[0] = res;
}
值我試着像使用對象[],對象與參數的一些方法沒有成功。我雖然拳擊/拆箱操作應該發生在這種情況下,但他們沒有。 我應該像使用.NET事件模式一樣使用輔助類型並創建中介對象,如 類持有者 public int x; }
給我們多一點的代碼。在你的代碼中調用'Invoke'之後會發生什麼? 'MessageFunc'正確地更改了值,所以要麼不等待異步任務完成,要麼代碼獲取修改後的值不正確。 – 2011-03-03 15:43:49
@Jim:它不會改變'x'的值! – 2011-03-03 16:09:16
@丹濤:當然不會改變'x'的價值! – 2011-03-03 19:35:20