我有一个计算线程函数,它使用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