异步中的 ThreadStatic ASP.NET Web API
ThreadStatic in asynchronous ASP.NET Web API
是否可以在单个请求中使用线程静态变量?当前代码使用线程静态变量进行日志记录,现在我们想使用异步控制器方法(使用异步和等待模式),这会导致问题,因为打开新线程时该变量为空。
await
会造成线程跳转,那么线程静态变量自然会出问题
要解决此问题,您可以使用 AsyncLocal<T>
(available in .NET 4.6), or (if you must) HttpContext.Current.Items
。在这两个中,如果您的平台上可用,我肯定会推荐 AsyncLocal<T>
而不是 Items
。
是否可以在单个请求中使用线程静态变量?当前代码使用线程静态变量进行日志记录,现在我们想使用异步控制器方法(使用异步和等待模式),这会导致问题,因为打开新线程时该变量为空。
await
会造成线程跳转,那么线程静态变量自然会出问题
要解决此问题,您可以使用 AsyncLocal<T>
(available in .NET 4.6), or (if you must) HttpContext.Current.Items
。在这两个中,如果您的平台上可用,我肯定会推荐 AsyncLocal<T>
而不是 Items
。