精华内容
下载资源
问答
  • BackgroundWorker

    2017-01-11 11:16:24
    BackgroundWorker backgroundWorker; backgroundWorker = new BackgroundWorker {WorkerSupportsCancellation = true}; backgroundWorker.DoWork += (s, e) => {  while (!backgroundWorker.Cancellat
    BackgroundWorker backgroundWorker;

    backgroundWorker = new BackgroundWorker {WorkerSupportsCancellation = true};

    backgroundWorker.DoWork += (s, e) =>
    {
       while (!backgroundWorker.CancellationPending)
       {
         // Do...
       }

       e.Cancel = true;
    };

    backgroundWorker.RunWorkerAsync();

    // 终止线程
    backgroundWorker.CancelAsync();

    当执行CancelAsync()时并没有真正终止线程而是将CancellationPending标记为ture e.Cancel=true才是真正终止


    展开全文
  • backgroundWorker

    2015-12-12 16:32:00
    使用情形:在程序中,...于是.net就有了backgroundWorker(后台进程). 使用十分简单,只用考虑三个事件就ok。 backgroundWorker1.RunWorkerAsync();//启动该线程,调用dowork  private void backgroundW...

    使用情形:在程序中,经常会有一些耗时较长的运算,为了保证用户体验,不引起界面不响应,我们一般会采用多线程操作。于是.net就有了backgroundWorker(后台进程).

    使用十分简单,只用考虑三个事件就ok。

         backgroundWorker1.RunWorkerAsync();//启动该线程,调用dowork
    
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
            {
                doing();
            }
        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
           label1.Visible = false;//操作完成时收到通知
        }
        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
          //进度更新的通知,可以用进度条     }

    注意:

    确保在 DoWork 事件处理程序中不操作任何用户界面对象,否则会报---进程间操作错误。 而应该通过 ProgressChanged 和 RunWorkerCompleted 事件与用户界面进行通信。

    BackgroundWorker 事件不跨 AppDomain 边界进行封送处理。 请不要使用 BackgroundWorker 组件在多个 AppDomain 中执行多线程操作。

    如果后台操作需要参数,请在调用 RunWorkerAsync 时给出参数。 在 DoWork 事件处理程序内部,可以从 DoWorkEventArgs.Argument 属性中提取该参数。

    转载于:https://www.cnblogs.com/lilixiang-go/p/5041431.html

    展开全文
  • C# BackgroundWorker 详解

    2021-01-21 17:12:08
     还好 .NET 类库中提供了一个叫做 BackgroundWorker 的类可以比较优雅的解决这类问题。虽然BackgroundWorker 类使用起来比较简单,但其中还是有一些需要注意的细节,下面我们通过 demo 程序介绍它的主要用法。我们...
  • BackGroundWorker.7z

    2020-04-18 14:21:34
    结合博客文章展示BackGroundWorker控件用法,结合博客文章展示BackGroundWorker控件用法,结合博客文章展示BackGroundWorker控件用法
  • BackGroundWorker实现进度条, private void InitializeBackgroundWorker(),start,end,cancel都有
  • 查询了一下MSDN文档,其中微软就BackgroundWorker类的功能有这么一个描述(英文的,根据个人理解翻译):BackgroundWorker类允许您在单独的线程上执行某个可能导致用户界面(UI)停止响应的耗时操作(比如文件下载...
  • backgroundworker serialport

    2013-03-11 23:01:29
    backgroundworker serialport 无法通信成功,自己留作备份
  • C#backgroundWorker

    2019-04-10 19:10:00
    private void button1_Click(object sender, EventArgs e) { backgroundWorker1.RunWorkerAsync(); } private void backgroundWorker1_DoWork(object sender, DoWorkE...


    private void button1_Click(object sender, EventArgs e) { backgroundWorker1.RunWorkerAsync(); } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { for (int i = 0; i < 10; i++) { Thread.Sleep(500); backgroundWorker1.ReportProgress(i); } } private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) { Debug.WriteLine($"{e.ProgressPercentage}"); } private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { Debug.WriteLine($"over!"); }

      

    一定要设置

    backgroundWorker1.WorkerReportsProgress = true;

     

    通常,用来显示进度条

    转载于:https://www.cnblogs.com/yaosj/p/10685435.html

    展开全文
  • 简单的方法可以通过 BackgroundWorker 类实现。 BackgroundWorker 可以用来更新UI界面,但是通常用来Progressbar(进度条)控件 例如更新UI private void Form1_Load(object sender, EventArgs e) { this....
  • BackgroundWorker 使用

    2018-08-16 21:40:00
    BackgroundWorker 使用 BackgroundWorker 使用 private void uploadBgWork_DoWork(object sender, DoWorkEventArgs e) { var file = e.Argument.ToString(); ...
    BackgroundWorker 使用
    private void uploadBgWork_DoWork(object sender, DoWorkEventArgs e)
            {
                var file = e.Argument.ToString();
                if (!File.Exists(file)) return;
                var info = new ReportUploadInfo
                {
                    Remark = meRemark.Text.Trim(),
                    ExpTime =
                        string.IsNullOrEmpty(txDays.Text)
                            ? DateTime.MaxValue.Date
                            : DateTime.Now.AddDays(double.Parse(txDays.Text)).Date,
                    DecompressionKey = tbPass.Text.Trim(),
                    UserEmail = teEmail.Text.Trim(),
                    UserPhone = tePhone.Text.Trim()
                };
                var result = FtpHelper.UploadFile(
                    new FileInfo(file), 
                    DateTime.Now.Year.ToString(), 
                    DateTime.Now.Month.ToString(), 
                    SystemConst.FtpAddr, 
                    SystemConst.FtpUserName, 
                    SystemConst.FtpPassWord, 
                    uploadBgWork, info);
                if (uploadBgWork.CancellationPending)
                    e.Cancel = true;
                else
                    e.Result = result;
            }
     private void uploadBgWork_ProgressChanged(object sender, ProgressChangedEventArgs e)
            {
                progressBar2.Text = (int.Parse(progressBar2.Text) + e.ProgressPercentage).ToString();
                if (e.UserState != null)
                    lblMsg.Text = e.UserState.ToString();
            }
    private void uploadBgWork_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
            {
                UploadOkSetStatus();
                if (e.Error != null)
                {
                    XtraMessageBox.Show(e.Error.Message);
                    Logger.WriteLog(e.Error.Message);
                    return;
                }
                if (e.Cancelled)
                {
                    XtraMessageBox.Show("文件上传已经取消!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else
                {
                    bool result;
                    if (bool.TryParse(e.Result.ToString(), out result))
                    {
                        if (result)
                        {
                            XtraMessageBox.Show("上传成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                        else
                        {
                            XtraMessageBox.Show("失败:上传失败", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            Logger.WriteLog("失败:上传失败" + btnSelectFile.Text);
                        }
                    }
                    else
                    {
                        XtraMessageBox.Show("错误:未知的返回值", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        Logger.WriteLog("错误:未知的返回值"+ btnSelectFile.Text);
                    }
                }
            }

     

    posted on 2018-08-16 21:40 micwin 阅读(...) 评论(...)  编辑 收藏

    转载于:https://www.cnblogs.com/chinanetwind/articles/9490266.html

    展开全文
  • BackgroundWorker

    2018-10-11 09:38:02
    BackgroundWorker 类允许您在单独的专用线程上运行操作。耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面 (UI) 似乎处于停止响应状态。如果您需要能进行响应的用户界面,而且面临与这类操作相关...
  • BackgroundWorker使用

    2017-09-06 06:14:46
    using System.ComponentModel;...private BackgroundWorker worker;  worker = new BackgroundWorker(); worker.WorkerSupportsCancellation = true; worker.DoWork += DoWork; worker.RunWorkerCo
  • 在C#程序中,经常会有一些耗时...虽然BackgroundWorker 类使用起来比较简单,但其中还是有一些需要注意的细节,下面我们就通过 demo 程序介绍它的主要用法。我们在 demo中计算1到100的累加和,为了演示,每次计算都 sle
  • C# BackGroundWorker

    2016-07-23 15:24:00
    BackgroundWorker对象有三个主要的事件: DoWork - 当BackgroundWorker对象的多线程操作被执行时触发。 RunWokerCompleted - 当BackgroundWoker对象的多线程操作完成时触发。 ProgressChanged - 当...
  • wpf BackgroundWorker样例

    2015-06-08 12:01:14
    今天一边看NBA文字直播(骑士与勇士的总决赛G2),一边研究了下BackgroundWorker在WPF下的使用。骑士赢了,兴奋的写了个例子,该样例,可以开启多个BackgroundWorker,模拟多文件下载,并实时更新页面进度条。 欢迎...
  • 使用BackgroundWorker组件

    2019-09-25 19:55:18
    BackgroundWorker 组件用来执行诸如数据库事务、文件下载等耗时的异步操作。 开始 在应用程序中添加一个BackgroundWorker实例,如果用的是VS,可以从工具上直接拖到应用程序: BackgroundWorker ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,952
精华内容 780
关键字:

backgroundworker