相关疑难解决方法(0)

调用RunWorkerAsync一次时,会调用BackgroundWorker的DoWork两次?

我在它工作的类中创建了一个后台工作者,但是如果我调用并等到最后一次运行,那么第二次调用它会两次执行相同的过程

我认为bw.DoWork + =有问题

private void button1_Click(object sender, EventArgs e)
{
    nptest.test.start("null", "null");    
}


namespace nptest
{
    class test
    {
        public static void start(string str, string strb)
        {
            if (bw.IsBusy != true)
            {
                bw.WorkerSupportsCancellation = true;
                bw.DoWork += (obj, e) => bw_DoWork(str, strb);
                bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
                bw.RunWorkerAsync();
            }
        }
        private static BackgroundWorker bw = new BackgroundWorker();
        private static void bw_DoWork(string str, string strb)
        {
            System.Windows.Forms.MessageBox.Show("initializing BackgroundWorker");
        }
        private static void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if ((e.Cancelled == …
Run Code Online (Sandbox Code Playgroud)

c#

13
推荐指数
3
解决办法
2万
查看次数

C#Backgroundworker继续运行DoWork

以下是我的编码:

    Form2 msgForm;
    private void button3_Click_1(object sender, EventArgs e)
    {

        bw.WorkerReportsProgress = true;
        bw.WorkerSupportsCancellation = true;
        bw.DoWork += new DoWorkEventHandler(bw_DoWork);
        bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);

        msgForm = new Form2();

        try
        {
            bw.RunWorkerAsync();

            msgForm.ShowDialog();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

    void bw_DoWork(object sender, DoWorkEventArgs e)
    {
        // Coding that transmit protocol and will last around 2 minutes.
    }

    void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        msgForm.Close();
    }
Run Code Online (Sandbox Code Playgroud)

每次单击按钮发送持续约2分钟的协议时,我都会使用后台工作方法.在传输过程中,From2将显示"请稍候".

但是我使用这种编码有一些问题.问题是,当我第一次点击按钮时,它会发送一次协议.之后我再次点击这是第二次,它传输协议两次.之后我再次点击这是第三次,它将协议传输3次......依此类推.每次单击按钮时,传输协议的次数都会增加.

不是每次我点击按钮时它只会在void bw_DoWork中编码运行吗?

我的编码有问题吗?

c#

0
推荐指数
1
解决办法
4034
查看次数

标签 统计

c# ×2