• 有关Backgroundworker


    Backgroundworker取消时应该用的有关代码:
    CancelAsync方法是在前台主线程用的,CancellationPending属性是在后台子线程用的。实际的使用方式应该是这样的:
    1.要取消异步操作,一般来说是在窗体中点击“取消”按钮,在“取消”按钮的单击事件中触发CancelAsync方法
    private void btn_Stop_Click(object sender, EventArgs e) 
    {
        backgroundWorker1.CancelAsync(); //提交取消命令,但还未取消
    }
    2.这时,CancellationPending由false变为true
    3.再在DoWork事件里获取CancellationPending,依据它来处理后台任务,比如说直接return;
    static void bw_DoWork(object sender, DoWorkEventArgs e)
    {            //判断是否取消操作
        if (bw.CancellationPending)
        {
            e.Cancel = true; //这里才真正取消
            return;
        }
    }
    4.最后完成时判断
    static void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
    if (e.Cancelled)
            Console.WriteLine("You cancelled!");
        else if (e.Error != null)
            Console.WriteLine("Worker exception: " + e.Error.ToString());
        else
        {
            Console.WriteLine("Complete - " + e.Result); // 从DoWork
        }
    }
  • 相关阅读:
    TCP流量控制和拥塞控制
    延迟确认和Nagle算法
    浅谈TCP三次握手和四次挥手
    中介者模式
    代理模式
    装饰者模式
    生成器模式(构建者模式)
    策略模式
    模板方法模式
    抽象工厂模式
  • 原文地址:https://www.cnblogs.com/mol1995/p/6559847.html
Copyright © 2020-2023  润新知