110,538
社区成员
发帖
与我相关
我的任务
分享
public void DoSomthing(int a, string b, Action<string> callback);
这个方法告诉说有可能以异步方式执行某功能,执行完毕则回调 callback 方法,难道你认为实现者就不会写成public void DpSomthing(int x, string y, Action<string> callback)
{
var z = x.ToString()+y;
callback(z);
}
了吗?
异步就是一种语法形式,谁跟你说必须用子线程?
甚至以(上述)同步顺序操作来实现异步接口功能声明,这也偶尔会看到。更别说有些技术(今天看来)比较陈旧的人还动不动就无意义地些什么 Sleep 阻塞语句了!所以异步是一种编程模式,是协议,不代表着实现返回 Task 类型方法的时候,那个人真的就会设计。
public Task<string> fun()
{
//一大堆代码
return Task.FromResult("hello world"); //
}
public Task<string> fun()
{
return Task<string>.Run(()=>{
//一大堆代码
return "hello world";
});
}
如果并不涉及异步函数调用,并没有必要将返回值搞为task类型,效率又低。private string _config;
public async Task<string> GetConfigString()
{
if(_config == null)
_config = await new WebClient().DownloadStringTaskAsync("http://1.2.com");
return _config;
}
这个方法,返回本地的一个字符串,尚且需要清爽干脆地 async/await 代码才能奏效,可见这种机制现在是多么地好用!未来会跟普通控制流语句一样成为编程必备机制,否则一个人就会如“骑着牛进城”一样地看其它编程同事。