私はwinformsアプリケーションを開発中です。GetResponse()が長すぎます
私はURLを検証する機能を持っています。
private void checkForSPSiteValidity(DataGridView Sites_dataGridView)
{
foreach (DataGridViewRow myRow in SharePointSites_dataGridView.Rows)
{
try
{
DataGridViewImageCell cell = myRow.Cells[CommonCodeClass.status_GridCol] as DataGridViewImageCell;
string url = myRow.Cells[CommonCodeClass.spURL_GridCol].Value.ToString();
WebRequest req = WebRequest.Create(url);
WebResponse res = req.GetResponse();
cell.Value = Image.FromFile(CommonCodeClass.Correct_Icons);
}
catch (WebException ex)
{
Console.WriteLine(ex.Message);
if (ex.Message.Contains("remote name could not be resolved"))
{
DataGridViewImageCell cell = myRow.Cells[CommonCodeClass.status_GridCol] as DataGridViewImageCell;
cell.Value = Image.FromFile(CommonCodeClass.warning_Icon);
}
}
}
}
このコードは正常に動作していると私は正しい値を取得しますが、これを処理するために長い間に取っていると時間のほとんどのアプリケーションは、絞首刑にされます。
私はスレッドに慣れているので、それを実装する方法があります。 例が本当に役に立ちます
これ以外の方法がある場合は、教えてください。
おかげ
これは素晴らしいです...しかし、私はそれを実装するいくつかの問題を抱えています。あなたはそれで私を助けてくれますか?どのようにバックグラウンド関数を呼び出すかのように。私にサンプルや何かを見せることができます – user175084
この例を見てください:http://msdn.microsoft.com/en-us/library/hybbz6ke.aspx –
本質的に、コントロールは別のスレッドで操作を実行します。主にDoWorkイベントを処理し、最後にWebリクエストの結果をe.Resultプロパティに渡します。フォームに直接返すことはできませんが、代わりにe.Resultを通して返す必要があります。フォーム内では、このイベントargを介して結果にアクセスし、元々はそれを行う必要があります。 –