当前位置: 移动技术网 > IT编程>开发语言>c# > c#异步操作后台运行(backgroundworker类)示例

c#异步操作后台运行(backgroundworker类)示例

2019年07月18日  | 移动技术网IT编程  | 我要评论
c#异步操作,backgroundworker类的使用,可以在后台运行需要的代码逻辑。 复制代码 代码如下:using system;using system.colle

c#异步操作,backgroundworker类的使用,可以在后台运行需要的代码逻辑。

复制代码 代码如下:

using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.linq;
using system.text;
using system.threading;
using system.windows.forms;

namespace testbackgroundwork
{
    public partial class form1 : form
    {

        public form1()
        {
            initializecomponent();
            initializebackgoundworker();
        }


        private backgroundworker backgroundworker1;

        private void initializebackgoundworker()
        {
            this.backgroundworker1 = new system.componentmodel.backgroundworker();
            this.backgroundworker1.workerreportsprogress = true;
            this.backgroundworker1.workersupportscancellation = true;
            this.backgroundworker1.dowork += new doworkeventhandler(backgroundworker1_dowork);
            this.backgroundworker1.progresschanged += new progresschangedeventhandler(backgroundworker1_progresschanged);
            this.backgroundworker1.runworkercompleted += new runworkercompletedeventhandler(backgroundworker1_runworkercompleted);
        }

        //**********backgroundworker1的回调函数**********
        void backgroundworker1_dowork(object sender, doworkeventargs e)
        {
            backgroundworker worker = sender as backgroundworker;
            for (int i = 1; i <= 10; i++)
            {
                if (worker.cancellationpending)
                {
                   e.cancel = true;
                }
                else
                {
                    thread.sleep(500);
                    int percentcomplete = (int)((float)i / (float)10 * 100);
                    worker.reportprogress(percentcomplete);
                }
            }
        }

        void backgroundworker1_progresschanged(object sender, progresschangedeventargs e)
        {
            this.progressbar1.value = e.progresspercentage;
        }

        void backgroundworker1_runworkercompleted(object sender, runworkercompletedeventargs e)
        {
            if (e.error != null)
            {
                messagebox.show(e.error.message);
            }
            else if (e.cancelled)
            {
                resultlabel.text = "canceled";
            }
            else
            {
                resultlabel.text = "completed";
            }
            startbtn.enabled = true;
            stopbtn.enabled = false;
        }

        //**********backgroundworker1的回调函数**********


        private void startbtn_click(object sender, eventargs e)
        {
            resultlabel.text = string.empty;
            this.startbtn.enabled = false;
            this.stopbtn.enabled = true;
            //启动异步操作.
            backgroundworker1.runworkerasync();
        }

        private void stopbtn_click(object sender, eventargs e)
        {
            backgroundworker1.cancelasync();
        }
    }
}

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网