2017-07-02 81 views
0

我創建一個項目,我實例多次同其中包含一些定時器,很多背景工人,當然還有一些私人陣列等.NET是同一個表單共享資源的多個實例嗎?

的問題是...它不起作用。

我的意思是,我可以看到所有表格,但BW只適用於第一種情況,而不適用於其他情況,即使BW.isBusy()返回「false」。 沒有返回任何錯誤,他們只是不做他們應該做的。

所以,我的問題是:是一些WinForm組件,就像BW共享?

如果是的話,是有辦法繞過這個問題?
如果不是,那麼這個問題的原因是什麼?

對不起,我不能告訴你源和軟件(它是一個客戶端),即使一個屏幕截圖。
但是,如果您需要更多的細節,我會分享它們。

爲了例如我用這樣的形式:

For (i = 0; i < 5; i++) { 
    Form1 f = New Form1(); 
    f.Show(); 
} 

預先感謝任何幫助。

+1

你可能只是把'static'地方你不應該有。 –

+0

找不到任何錯誤。 – JS96

+0

你能告訴我們計時器和後臺工作者是如何初始化/創建的嗎? – TheVillageIdiot

回答

0

我發現了一個「解決方法」我的問題。
代替實例乘以表格,我開始帶有我需要參數的獨立進程。

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(); 

這不是最好的解決辦法,但問題消失在我的情況下,它的確定有多個進程,而不是多種形式。

相關問題