【发布时间】:2013-01-28 17:39:28
【问题描述】:
我有一个问题,我想在Main() 中等待,直到Download() 完成。但是,文件下载/检查开始,同时其他行开始执行。
如何使用await或其他任何东西在Main中等待?
private void Main()
{
Download("http://webserver/file.xml");
//Do something here ONLY if the file exists!!
}
//This method invokes the URL validation
private void Download(downloadURL)
{
System.Uri targetUri = new System.Uri(downloadURL);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(targetUri);
request.BeginGetResponse(new AsyncCallback(WebRequestCallBack), request);
}
//In this method the URL is being checked for its validity
void WebRequestCallBack(IAsyncResult result)
{
HttpWebRequest resultInfo = (HttpWebRequest)result.AsyncState;
HttpWebResponse response;
string statusCode;
try
{
response = (HttpWebResponse)resultInfo.EndGetResponse(result);
statusCode = response.StatusCode.ToString();
}
catch (WebException e)
{
statusCode = e.Message;
}
onCompletion(statusCode);
}
//This method does not help! I just added if it could be any useful
private void onCompletion(string status)
{
if (status == HttpStatusCode.OK.ToString())
MessageBox.Show("file exists");
else
MessageBox.Show("file does not exists");
}
我需要的,具体来说是……
- 从给定的 URL 下载文件
- 下载前验证网址
-
如果(已验证)则
- 继续下载并执行其他任务
-
其他
- 失败并停止进程,不要下载!并给出 URL 已损坏(无法验证)的消息!
我正在尝试执行“验证”部分,检查 URL 是否正确并等待响应。为了继续,我需要某种验证过程的状态。
【问题讨论】:
-
任何原因
//Do something here ONLY if the file exists!!无法在WebRequestCallBack或onCompletion中完成? -
.net 4.5 或更早的版本?
-
@Ginosaji 好吧,我只是简单地举个例子,不容易使用
onCompletion。我需要代码的连续性。 -
@daryal 早期版本 .net 4.0
-
您必须更详细地说明您需要什么。否则答案是:“使用同步版本”。
标签: c# windows-phone-7 windows-phone async-await