2

我编写了一个由 VBScript 访问的 C# DLL COM 库。所有库的东西都写在主程序中,没有任何形式。

后来我添加了一个只显示状态的表单(如“49% 完成”)。这工作得很好,但是当 DLL 必须计算很多东西时,表单会“挂起”。我希望表单始终可以访问和移动。

所以我决定为表格制作一个自己的线程。创建线程和表单很容易,但是从主程序访问此表单时我遇到了很大的问题。例如,我只想设置标题。

我这样称呼表格:


namespace PART1.PART2
{
    public class CLASSNAME
    {
        private Thread fStatus;
        private frm_Status fStatusForm;

        public void runShowStatus()
        {
            if (fStatus == null)
            {
                fStatus = new Thread(new ThreadStart(threadForm));
                fStatus.Start();
            }
        }

        private void threadForm()
        {
            fStatusForm = new frm_Status();
            Application.Run(fStatusForm);
        }
    }
}

表格本身是标准表格。目前没有特殊代码。

有类似的帖子,但有两个主要区别:

  • 表单在线程中 - 表单不在主程序中,并且表单不是主表单。
  • 主程序尝试访问表单 - 表单不尝试访问主程序。
4

1 回答 1

0

volatile您可以像这样向主类添加一个变量CLASSNAME

private static volatile int progress = 0;

现在您可以从主线程更改其值,并从表单线程读取值。

于 2012-11-27T14:09:22.260 回答