我需要在Download.file方法完成后调用Join方法。 我尝试添加等待关键字,但它不起作用
Thread myThread = new Thread(new ThreadStart(()=> await Download.file(uri)));
Thread myThread = new Thread(new ThreadStart(()=>Download.file(uri)));
myThread.Start();
myThread.Join();
class Download{
public static async void file(string url)
{
try
{
HttpWebRequest request;
HttpWebResponse webResponse = null;
request = HttpWebRequest.CreateHttp(url);
request.AllowReadStreamBuffering = true;
webResponse = await request.GetResponseAsync() as HttpWebResponse;
Stream responseStream = webResponse.GetResponseStream();
using (StreamReader reader = new StreamReader(responseStream))
{
string content = await reader.ReadToEndAsync();
}
webResponse.Close();
}
catch (Exception ex) {
Debug.WriteLine(ex.Message);
}
}
}
由于
答案 0 :(得分:5)
您应该使用file
方法(顺便说一句,它应该是DownloadFileAsync
),而不是Task
。< / p>
然后你可以等待它。
但是,不清楚为什么你在另一个线程中启动它 - 不同步的一点是你不需要启动一个新线程。从另一个异步方法,您可以使用:
void
(当然这个方法对内容没有做任何事情的事实有点奇怪......)
您还应该考虑使用await Download.file(uri);
或HttpClient
,这两种行为都已经可用。