HTMLドキュメントの解析を行う方法がありますが、時間がかかり、UIがフリーズします。だから私はスレッドを使いたいのですが、私は混乱しています。バックグラウンド ワーカー、ディスパッチャなど、さまざまな種類のスレッドがあります。どのタイプを使用すればよいですか? また、私のメソッドでは、パラメーターを渡します。スレッドを使用する場合、1 つのパラメーターを渡すにはどうすればよいですか?
2 に答える
0
以下は、バックグラウンド ワーカーを使用したコード例です。
// I usually disable controls (buttons, etc.)
// so user is prevented to perform other
// actions
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += (s, e) =>
{
// Get the parameter
var param = e.Argument as <your expected object>
// Perform parsing
}
worker.RunWorkerCompleted += (s1, e1) =>
{
System.Windows.Threading.Dispatcher.CurrentDispatcher.BeginInvoke(
new Action(() =>
{
// enable you controls here
}));
}
worker.RunWorkerAsync(parameter);
お役に立てれば!
于 2012-07-25T09:36:09.410 に答える
0
WPF以来、バックグラウンドワーカーを使用していません。WinForms用に作成されたもので、WPFでは避けるべきだと聞きましたが、間違っている可能性があります。文字列をパラメーターとして (UI コントロールではなく) 渡しているため、次のような別のスレッドへのアクセスに問題はないはずです。
private void DoStuff(string documentName)
{
Action a = () =>
{
var result = ParseFile(documentName);
Action b = () =>
{
TextBox1.Text = result;
};
Dispatcher.BeginInvoke(b);
};
a.BeginInvoke(callback =>
{
a.EndInvoke(callback);
}, null);
}
注: デリゲートをループ内に配置しないでください。代わりに、デリゲート内にループを配置してください。
于 2012-07-25T10:48:50.643 に答える