在标题栏上按下鼠标会增加速度

本文关键字:增加 加速度 鼠标 标题栏 | 更新日期: 2023-09-27 18:05:22

我正在开发一个电子邮件应用程序,并在后台工作器中创建电子邮件。

后台工作器遍历所有联系人,每次它都会创建一封电子邮件并将其发送到outlook并发送后台工作人员。报告进度,用已发送的电子邮件信息更新表单。

这个工作相当完美,性能还可以。

但是,当我点击并按住表单的标题栏时(例如,如果有人要移动表单),电子邮件创建的速度几乎增加了一倍。

我试过调试,我失去了速度,如果UI的更新是在减慢它,但即使我不发送进度报告或显示进度形式,速度保持不变。

我不知道是什么导致了这个问题。欢迎提出任何建议。

这是我的backgroundworker的doWork方法

void bw_DoWork(object sender, DoWorkEventArgs e)
{
    sentContacts = new List<Contact>();
    double delay = GlobalVariables.delayBetweenBatch;
    while (contactSentId < contacts.Count && !bw.CancellationPending)
    {
        if (lastSending < DateTime.Now.AddMinutes(delay))
        {
            for (int innerCounter = 0; innerCounter < GlobalVariables.emailsPerBatch; innerCounter++)
            {
                if (contactSentId < contacts.Count && !bw.CancellationPending)
                {
                    Outlook.MailItem mailItem = createMailItem(contacts[contactSentId], Application, wordReader, false);
                    bool success = sendMail(contacts[contactSentId], mailItem);
                    bw.ReportProgress(contactSentId + 1, new ResultContact(success, contacts[contactSentId]));
                    sentContacts.Add(contacts[contactSentId]);
                    contactSentId++;
                }
            }
            lastSending = DateTime.Now;
        }
    }
}

在标题栏上按下鼠标会增加速度

你对lastSending的检查是错误的,你想检查timenow是否大于lastSending+delay,以确保你不会发送钉子比延迟时间更频繁。