如果我发起多个异步网络请求,将结果追加到全局变量中,比如一个 StringBuilder
中,这样做是否安全?我知道返回结果的顺序是不确定的。
这样做会导致很多任务阻塞吗?
这样做是安全的吗?
private static StringBuilder sb = new StringBuilder();
private static async Task AccessTheWebAsync()
{
HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync(@"http://www.google.com/");
sb.Append(response.StatusCode).Append(Environment.NewLine);
}
static void Main(string[] args)
{
List<Task> tasks = new List<Task>();
for (int i = 0; i < 10; i++)
tasks.Add(AccessTheWebAsync());
Task.WaitAll(tasks.ToArray());
Console.Write(sb.ToString());
Console.ReadLine();
}
private static async Task<string> AccessTheWebAsync()
,返回response.StatusCode
,然后在WaitAll
循环结束后遍历并附加所有的Result
? - user17753