BackgroundWorkerを使うには?
2023-10-10 12:12:21
質問
3つのメソッドがあることは知っています。私のプログラムでは、メッセージを送信するメソッドを持っています。それはしばしば遅く、プログラムがボタンを押すことに応答してメッセージをまったく送信しないことがあります。時には5秒も遅れてしまい、プログラムがフリーズしてしまいます。私は
BackgroundWorker
を使用して、期待通りにメッセージを送信し、プログラムが常に正常に動作するようにしたいのです。ボタンハンドラの中にメッセージを送信するコードがありました。さて、これに相当するコードはどこに置けばいいのでしょうか?私は、このすべてがまだボタンプレスによって処理されることを望みます。
これは適切なハンドラですか?
backgroundWorker1.RunWorkerAsync();
と入っています。
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {}
ボタンハンドラの中にコードを入れるんですね。 そしてこの前に
carga.progressBar1.Minimum = 0;
carga.progressBar1.Maximum = 100;
Cargaは、ProgressBarがある私の他のフォームです。このシナリオでBackgroundWorkerを使用するにはどうすればよいですか?
どのように解決するのですか?
プログレスバーの更新は
ProgressChanged
または
RunWorkerCompleted
イベントハンドラはUIスレッドと同期しています。
基本的な考え方は
Thread.Sleep
はここでいくつかの作業をシミュレートしているだけです。実際のルーティングの呼び出しに置き換えてください。
public Form1()
{
InitializeComponent();
backgroundWorker1.DoWork += backgroundWorker1_DoWork;
backgroundWorker1.ProgressChanged += backgroundWorker1_ProgressChanged;
backgroundWorker1.WorkerReportsProgress = true;
}
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
for (int i = 0; i < 100; i++)
{
Thread.Sleep(1000);
backgroundWorker1.ReportProgress(i);
}
}
private void backgroundWorker1_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
関連
-
[解決済み】統合マネージドパイプラインモードで適用されないASP.NETの設定が検出された
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】SmtpException: トランスポート接続からデータを読み取れません:net_io_connectionclosed
-
[解決済み】ソケットのアドレス(プロトコル/ネットワークアドレス/ポート)は、通常1つしか使用できない?
-
[解決済み】 C# 条件演算子エラー 代入、call、increment、decrement、await、new object 式のみ文として使用可能です。
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] 乱数(int)を生成する方法を教えてください。
-
[解決済み] IDisposable インターフェースの正しい使用法
-
[解決済み] BackgroundWorkerがキャンセルされるのを待つには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み】C#におけるtypedefの等価性
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み】C# - パスに不正な文字がある場合
-
[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
[解決済み】C#のequal to演算子でtextとvarcharのデータ型は互換性がない
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み】別のスレッドがこのオブジェクトを所有しているため、呼び出し側のスレッドはこのオブジェクトにアクセスできない