我正在使用具有[ThreadStatic]
属性的变量来存储每个套接字的当前活动Session
(我使用WebSocket作为连接类型)。在 socket 的开头connect
,我将它的值分配给一个新Session
对象,然后执行一个Task
方法来获取输出。完成后Task
,Session
值变为null
。
ThreadStatic
宣言:
public class Session
{
...
[ThreadStatic] public static Session _session;
}
调用的任务方法:
public async Task<string> Connect()
{
var path = Path.Combine(Directory.GetCurrentDirectory(), "storyboard", "1.json");
var json = await File.ReadAllTextAsync(path, Encoding.UTF8);
return $"\"i\":{this.id},\"m\":\"build\",\"a\":{json}";
}
任务执行部分:
// Session._session == null ? --> false (here, the value still exists)
var res = await obj.Item1.Execute(met, args); // execute a method with async call
await Session._session.Send(res); // Session._session == null ? --> true
这里有什么问题?