我编写了一个C#DLL COM库,可以通过VBScript访问。所有的库内容都是在主程序中编写的,没有任何形式。
后来我添加了一个只显示状态的表单(例如" 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);
}
}
}
表单本身是标准表单。到目前为止还没有特殊的代码。
有相似的帖子,但有两个主要区别:
答案 0 :(得分:0)
您可以将volatile
变量添加到主类CLASSNAME
,如下所示:
private static volatile int progress = 0;
现在您可以从主线程更改其值,并从表单线程中读取值。