C# 返回或等待任务<;T>;在WCF中
假设我有一个WCF Websocket服务:C# 返回或等待任务<;T>;在WCF中,c#,wcf,asynchronous,async-await,C#,Wcf,Asynchronous,Async Await,假设我有一个WCF Websocket服务: [ServiceContract(CallbackContract =typeof(ICallback))] public interface ISomeInterface { [OperationContract] string GiveMeString(); } 现在,在客户端,由于WCF,我还提供了MesTrignAsync方法供我使用。现在,我想创建使用此类WCF生成的异步方法的客户端API。 有两种方法可以做
[ServiceContract(CallbackContract =typeof(ICallback))]
public interface ISomeInterface
{
[OperationContract]
string GiveMeString();
}
现在,在客户端,由于WCF,我还提供了MesTrignAsync方法供我使用。现在,我想创建使用此类WCF生成的异步方法的客户端API。
有两种方法可以做到这一点:
public Task<string> GiveMeStringAsync() //method on client side
{
Task<string> task = null;
try
{
task = ServiceReference.GiveMeStringAsync();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return task;
}
public Task GiveMeStringAsync()//客户端的方法
{
Task=null;
尝试
{
task=ServiceReference.GiveMeStringAsync();
}
捕获(例外情况除外)
{
控制台写入线(例如消息);
}
返回任务;
}
那么我将等待这个方法
或者在该方法中使用wait:
public async Task<string> GiveMeStringAsync() //method on client side
{
string s = String.Empty;
try
{
s = await ServiceReference.GiveMeStringAsync();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return s;
}
客户端上的公共异步任务GiveMeStringAsync()//方法
{
string s=string.Empty;
尝试
{
s=等待ServiceReference.GiveMeStringAsync();
}
捕获(例外情况除外)
{
控制台写入线(例如消息);
}
返回s;
}
我的问题是:
似乎你需要的是关于这一点的答案,但我将根据你的提问进行总结: 更多的等待会降低性能吗 如果你只测量一根线-当然。等待任务的全部原因是,等待时间长的任务不会阻碍您可以同时执行的其他工作 您将如何等待未标记为异步的任务方法?您还应该考虑其他因素,例如:您真的希望try/catch在没有等待的情况下工作吗?可能不会
简单的答案是一直等待/async,不要忘记使用
CancellationToken
s,或者.ConfigureAwait(false)代码>在适当的地方 似乎您需要的是关于这一点的详细信息,但我将尝试根据您提出的问题进行总结:
更多的等待会降低性能吗
如果你只测量一根线-当然。等待任务的全部原因是,等待时间长的任务不会阻碍您可以同时执行的其他工作
您将如何等待未标记为异步的任务方法?您还应该考虑其他因素,例如:您真的希望try/catch在没有等待的情况下工作吗?可能不会
简单的答案是一直等待/async,不要忘记使用CancellationToken
s,或者.ConfigureAwait(false)代码>在适当的地方