delegate.BeginInvoke和UI线程的问题

时间:2012-11-23 08:29:43

标签: c# multithreading threadpool

在按钮点击事件(表单控件)中,我有:

Action<SomeType, CallbackType> action = (__o1, __callback) =>
{
  __o1.Operation(__callback);
};
action.BeginInvoke(
  o1, 
  callback,
  (asyncCallback) => 
    ((Action<SomeType, CallbackType>)asyncCallback.AsyncState).EndInvoke(asyncCallback),
  action);

由于某些未知原因,UI线程会挂起,直到此异步调用返回。但仍然是click事件实现返回。

任何想法可能是什么问题?

1 个答案:

答案 0 :(得分:0)

试试这个:

Action<SomeType, CallbackType> action = (__o1, __callback) =>
{
    __o1.Operation(__callback);
};
action.BeginInvoke(
    o1,
    callback,
    (asyncCallback) =>
    ((Action<SomeType, CallbackType>)((AsyncResult)asyncCallback).AsyncDelegate).EndInvoke(asyncCallback),
    action);