我的代码中有以下重复出现的try/catch模式.使用try/catch块来处理在orionProxy中调用方法时抛出的任何异常.
async private void doGetContacts()
{
try {
currentContacts = await orionProxy.GetContacts (); // call method in orionProxy
ShowContacts (); // do something after task is complete
}
catch (Exception e) {
orionProxy.HandleException (e); // handle thrown exception
}
}
Run Code Online (Sandbox Code Playgroud)
我想写的是以下内容.
async private void doGetContacts()
{
currentContacts = await orionProxy.CheckForException(orionProxy.GetContacts ());
ShowContacts (); // do something after task is complete but shouldn't run on exception
}
Run Code Online (Sandbox Code Playgroud)
任何指针/建议?我尝试过各种形式的Actions/Tasks/Lambdas,但是没有什么能在orionProxy.CheckForException(?)中正确捕获异常,因此ShowContacts不会运行.
如何使用Task.Factory.FromAsync工厂为通过"out"参数返回多个值的end方法?
begin方法有这个签名:
public virtual System.IAsyncResult BeginGetCaseStatus(int CaseOID, int ClientOID, System.AsyncCallback @__Callback, object @__UserData)
Run Code Online (Sandbox Code Playgroud)
结束方法是:
public virtual void EndGetCaseStatus(System.IAsyncResult @__AsyncResult, out DTGenericCode[] BasicStatus, out DTGenericCode[] ARStatus)
Run Code Online (Sandbox Code Playgroud)
我可以用一些如何使用:
public Task<?> GetCaseStatusAsync(int CaseOID, int ClientOID)
{
return Task.Factory.FromAsync (BeginGetCaseStatus(CaseOID, ClientOID, null, null), EndGetCaseStatus(?, ?));
}
Run Code Online (Sandbox Code Playgroud)