tri*_*kui 2 c# multithreading asynchronous
我需要在Download.file方法完成后调用Join方法.我试图添加await关键字,但它没有用
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢
你应该让你的file方法(顺便说一句,它应该是类似的东西DownloadFileAsync)返回Task而不是void.
然后你可以等待它.
但是,目前还不清楚为什么你会在不同的线程反正开始本-异步的一点是,你并不需要开始一个新的线程.从另一个异步方法,你可以使用:
await Download.file(uri);
Run Code Online (Sandbox Code Playgroud)
(当然这个方法没有对内容做任何事情这个事实有点奇怪......)
您还应该考虑使用HttpClient或者WebClient两者都具有此行为.