ISynchronizeInvoke
由於用於回到「正確」的主題,通常用在所有的UI操作需在同一線程上的客戶端應用程序。這通常通過消息泵/事件循環完成 - 通常不會在控制檯應用程序中存在?
控制檯應用程序中的線程要求是什麼?如果你沒有任何,你也許可以編寫自己的無操作實現ISynchronizeInvoke
它總是返回false
從InvokeRequired
等下面是在實施第一次嘗試 - 未經檢驗的,你要知道...
public class NoOpSynchronizeInvoke : ISynchronizeInvoke
{
private delegate object GeneralDelegate(Delegate method,
object[] args);
public bool InvokeRequired { get { return false; } }
public Object Invoke(Delegate method, object[] args)
{
return method.DynamicInvoke(args);
}
public IAsyncResult BeginInvoke(Delegate method,
object[] args)
{
GeneralDelegate x = Invoke;
return x.BeginInvoke(method, args, null, x);
}
public object EndInvoke(IAsyncResult result)
{
GeneralDelegate x = (GeneralDelegate) result.AsyncState;
return x.EndInvoke(result);
}
}
你說你在VB.NET中工作,但代碼片段是C#...? – Tim 2013-02-11 06:49:33
你得到的錯誤是哪一行? – Tim 2013-02-11 06:51:36
是的我正在調用在C#中編寫的DLL的VB.net代碼。 我在VB代碼中調用此方法: x =新的AsyncProcess.ProcessCaller(Me) 這是給我的運行時錯誤。 – user2060435 2013-02-11 08:10:56