我正在创建一个项目,我实例化多次相同的表单,其中包含一些计时器,很多背景工人,当然还有一些私人阵列等。
问题是......它不起作用。
我的意思是,我可以看到所有表单,但BW
仅适用于第一个实例,而不适用于其他实例,即使BW.isBusy()
返回`false。
如果没有返回任何错误,他们就不会做他们应该做的事情。
所以,我的问题是:一些 WinForm 组件,如 BW ,是否共享?
如果是,有办法绕过这个问题吗? 如果不是,这个问题可能是什么原因?
抱歉,我无法向您展示该软件的来源甚至是屏幕截图(这是针对客户的) 但如果您需要更多细节,我会分享它们。
例如我正在使用这样的表格:
For (i = 0; i < 5; i++) {
Form1 f = New Form1();
f.Show();
}
提前感谢您的帮助。
答案 0 :(得分:0)
我的问题找到了“解决方法” 我没有实例化 N 次表单,而是使用我需要的参数启动 N 单独的进程。
For (i = 0; i < 5; i++) {
ProcessStartInfo pHelp = new ProcessStartInfo();
pHelp.FileName = My.Application.Info.DirectoryPath + "\mySoft.exe";
pHelp.Arguments = arg1 + "," + arg2 + "," + arg3;
pHelp.UseShellExecute = true;
pHelp.WindowStyle = ProcessWindowStyle.Normal;
Process proc = Process.Start(pHelp);
}
然后在 Form_Load()
中string[] args = Environment.GetCommandLineArgs();
//
// Here code to split the args, which starts at index 1 of the array.
//
Form1 f = New Form1();
//
// Here code to change some form variables.
// ex. f.Var1 = arg1;
//
f.Show();
Me.Close();
这不是最好的解决方案,但问题消失了,在我的情况下,可以使用多个进程而不是多个表单。