問題が発生しました。終了する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 が壊れている (確認できませんでした) というメッセージを表示します。
URLが正しいかどうかを確認し、応答を待っている「検証」部分を実行しようとしています。続行するには、検証プロセスのステータスが必要です。