【发布时间】:2015-01-14 14:01:31
【问题描述】:
我有一个将对象读/写到存储的接口。在一种情况下,存储是具有异步方法的数据库。在另一种情况下,它只是一个 cookie。
我收集到它建议沿以异步调用结束的路径使用异步返回,因此接口也是异步的似乎也有意义。但是在 cookie 的情况下,我只是设置了几个字段并将其粘贴在响应中,因此那里还没有任何异步。我可以将该位包装在 await Task.Run() 中以匹配新接口,但我不知道这是否可取,或者它是否对性能有一些负面影响。
怎么办?
public interface IProfileStore
{
async Task SetProfile(UserProfile profile);
}
public async Task SetProfile(UserProfile profile)
{
// Look mom, I'm needlessly async
await Task.Run(() =>
{
var cookie = new HttpCookie(AnonymousCookieName);
cookie["name"] = profile.FullName;
HttpContext.Current.Response.Cookies.Add(cookie);
});
}
【问题讨论】:
-
那么,您能够注意到您的代码占用 TP 线程 30 纳秒的确切几率是多少? Cookie 通常适用于延迟比其多 百万 倍的网络连接。
-
@James 我认为您不能在接口方法上使用
async修饰符。 -
看看my
async-awaitcuration上的文章。
标签: c# asynchronous async-await