2011-03-01 27 views
0

我是新來的C#進入文本框,我想做某事像這樣:等待,直到用戶按另一種形式和返回值

myList = list of 1000+ string values; 
    1.StartNewThreads(50); //50 is the numbers of new threads 
    2.DoSth1(next value from myList); 
    3.DoSth2(); 
    4. var value = { 
    ShowNewImageForm(); //show only if not another ImageForm is displayed if another is show - wait 
    WaitUntilUserPressEnterInTextBox(); 
    ReturnValueFormTextbox(); 
    } 
    5.DoSth3(); 
    6.StartNewThread(); 

現在我有:

foreach(String s in myList) { 
DoSth1(s); 
DoSth2();  
DoSth3();  
} 

現在我正在尋找想法點1,3,6你可以建議我如何解決這個問題?

  1. 如何啓動50個線程
  2. 如何從文本中獲得價值的另一種形式,當用戶按回車
+1

這很混亂。你想把你的循環分成50個線程嗎?線程應該做什麼? – Mario 2011-03-01 15:19:35

+1

如果你不得不問如何開始50個線程,你不想這樣做。 – Justin 2011-03-01 15:27:21

+0

你爲什麼要50個線程?他們應該做的究竟是什麼? – Ian 2011-03-01 15:28:59

回答

0

對於你的第二個問題: 只是通過你的父窗體/所有者的形式在子窗體的構造函數並使用該引用來傳遞/設置返回值或(更優雅)定義一個事件,該事件將在用戶按下回車鍵並在父窗體中添加事件處理程序後觸發子窗體。

0

對於啓動一些線程,你可以使用一個線程[]

public static void StartThreads(int n) 
    { 
     System.Threading.Thread[] threads = new System.Threading.Thread[n]; 
     for (int i = 0; i < threads.Length; i++) 
     { 
      threads[i] = new System.Threading.Thread(new System.Threading.ThreadStart(DoThread)); 
     } 
    } 

    public static void DoThread() 
    { 
     //do some here 
    } 

在第二種形式,你可以定義此處理程序:在第一種形式

public static void textBox1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.Enter) 
     { 
      TextBox myText = (TextBox)sender; 
      //your code here... 
     } 
    } 

然後:

textBox1.KeyDown += new KeyEventHandler(Form2.textBox1_KeyDown); 
相關問題