Welcome To|

园龄:粉丝:关注:

BackgroundWorker与DoWorkEventArgs详解

 
在学习公司给的项目过程中遇到了一些不懂得地方,在此记录下来。
 
 
 

1、BackgroundWorker(在单独的线程上执行操作)

首先在Microsoft学习BackgroundWorker基础知识,了解目标属性与方法。

BackgroundWorker 类 (System.ComponentModel) | Microsoft Learn

下面是一些对我有帮助的文章,在此贴出来方便学习。
C# BackgroundWorker 详解 - sparkdev - 博客园 (cnblogs.com)

2、DoWorkEventArgs 类(为 DoWork 事件处理程序提供数据)

DoWorkEventArgs 类 (System.ComponentModel) | Microsoft Learn

下面的代码示例演示如何使用 DoWorkEventArgs 类来处理 DoWork 事件。

复制代码
 1 private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
 2 {
 3     // Do not access the form's BackgroundWorker reference directly.
 4     // Instead, use the reference provided by the sender parameter.
 5     BackgroundWorker bw = sender as BackgroundWorker;
 6 
 7     // Extract the argument.
 8     int arg = (int)e.Argument;
 9 
10     // Start the time-consuming operation.
11     e.Result = TimeConsumingOperation(bw, arg);
12 
13     // If the operation was canceled by the user, 
14     // set the DoWorkEventArgs.Cancel property to true.
15     if (bw.CancellationPending)
16     {
17         e.Cancel = true;
18     }
19 }
复制代码
  •  private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e):定义了一个名为 backgroundWorker1_DoWork 的方法,该方法是 BackgroundWorkerDoWork 事件的处理方法。DoWork 事件在后台执行长时间运行的操作。
    • sender:事件的发送者,通常是 BackgroundWorker 对象本身。
    • e:包含事件数据的 DoWorkEventArgs 对象,可以通过它访问传递给事件处理方法的参数,并设置操作的结果或取消标志。
  • BackgroundWorker bw = sender as BackgroundWorker;:将 sender 强制转换为 BackgroundWorker 对象,并赋值给 bw 变量。这样可以访问 BackgroundWorker 对象的属性和方法。

  • int arg = (int)e.Argument;:从 DoWorkEventArgs 对象的 Argument 属性中提取传递给事件处理方法的参数,并将其强制转换为整数类型,并赋值给 arg 变量。这样可以在后台操作中使用传递的参数。

  • e.Result = TimeConsumingOperation(bw, arg);:调用名为 TimeConsumingOperation 的方法来执行耗时的操作,并将操作的结果赋值给 DoWorkEventArgs 对象的 Result 属性。这样可以在后台操作完成后获取结果。

  • if (bw.CancellationPending):检查 BackgroundWorker 对象的 CancellationPending 属性,判断操作是否被用户取消。

      • 如果 CancellationPendingtrue,则将 DoWorkEventArgs 对象的 Cancel 属性设置为 true,表示操作被取消。
      • 如果 CancellationPendingfalse,则继续执行后台操作。

仅为学习记录文章,如有冒犯请联系我!

本文作者:kai-liang

本文链接:https://www.cnblogs.com/kai-liang/p/17440627.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   退退退退下吧  阅读(135)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.

作曲 : Reol

作词 : Reol

fade away...do over again...

fade away...do over again...

歌い始めの一文字目 いつも迷ってる

歌い始めの一文字目 いつも迷ってる

どうせとりとめのないことだけど

伝わらなきゃもっと意味がない

どうしたってこんなに複雑なのに

どうしたってこんなに複雑なのに

噛み砕いてやらなきゃ伝わらない

ほら結局歌詞なんかどうだっていい

僕の音楽なんかこの世になくたっていいんだよ

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

僕は気にしない 君は気付かない

何処にももういないいない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

忘れていく 忘れられていく

We don't know,We don't know.

目の前 広がる現実世界がまた歪んだ

目の前 広がる現実世界がまた歪んだ

何度リセットしても

僕は僕以外の誰かには生まれ変われない

「そんなの知ってるよ」

気になるあの子の噂話も

シニカル標的は次の速報

麻痺しちゃってるこっからエスケープ

麻痺しちゃってるこっからエスケープ

遠く遠くまで行けるよ

安定なんてない 不安定な世界

安定なんてない 不安定な世界

安定なんてない きっと明日には忘れるよ

fade away...do over again...

fade away...do over again...

そうだ世界はどこかがいつも嘘くさい

そうだ世界はどこかがいつも嘘くさい

綺麗事だけじゃ大事な人たちすら守れない

くだらない 僕らみんなどこか狂ってるみたい

本当のことなんか全部神様も知らない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

僕は気にしない 君は気付かない

何処にももういないいない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

忘れていく 忘れられていく

We don't know,We don't know.