私は C# の初心者で、HttpWebRequestを使用して Web ページのソースを取得しています。さて、正規表現を使用してソースコードをスキャンして、html 要素内のコンテンツを探しています. 基本的に、正規表現は C# では次のようになります。
Match m = Regex.Match(result, @"^(.*?<form .*?>(.*?)</form>.*?)+$", RegexOptions.Singleline);
私が直面している唯一の問題は、このプロセスが完了するまでアプリケーションがフリーズすることです。バックグラウンド スレッドは役に立ちますか? もしそうなら、それを実装するためのスニペットで私を助けてくれませんか?.. ユーザーにプログレスバーなどを表示できればいいのですが。
private void button1_Click(object sender, EventArgs e)
{
Thread backgroundThread = new Thread(
new ThreadStart(() =>
{
Match m = Regex.Match(result, @"^(.*?<form .*?>(.*?)</form>.*?)+$", RegexOptions.Singleline);
foreach (var capture in m.Groups[2].Captures)
{
forms.Add(capture.ToString());
}
MessageBox.Show("Thread completed!");
if (progressBar.InvokeRequired)
progressBar.BeginInvoke(new Action(() => progressBar1.Value = 0));
}
));
backgroundThread.Start();
}