2010-02-15 31 views
1

我有一個應用程序上傳文件到服務器,但是當我按上傳凍結,直到它完成,所以我想要做出另一種形式彈出說,上傳和做所有的上傳表單嵌套凍結主窗體。但要做到這一點,我需要能夠將選定的信息發送到其他表單。發送信息到另一個表單c#

我嘗試過使用BackgroundWorker,但那不起作用,窗體仍然凍結。

+0

請您發表一些代碼嗎? –

+0

我認爲你可以定義一個事件,當它上傳一個文件時觸發。你也可以使用DoEvents。 –

回答

3

它凍結的原因是因爲您正在上傳與GUI或主線程相同的線程。 您可以創建一個工作線程來處理上傳的工作,以便GUI在處理上傳時不會鎖定。

實施例:

private void uploadButton_Click(object sender, EventArgs e) 
    { 
     object[] params = new object[] { "your file what ever type this is a generic example"}; 
     Thread uploadThread = new Thread(new ParameterizedThreadStart(processUpload)); 
     uploadThread.IsBackground = true; 
     uploadThread.Start(params); 
    } 

    private void processUpload(object params){ 
     // do upload logic here 
     object[] _params = (object[])params; 
     string s = _params[0].ToString(); 
    } 

從一種形式到另一種傳遞信息是直線前進,但這種形式也將導致一個鎖定在處理。如果這就是你想要做的,那麼只需創建一個構造函數來爲你想傳遞的任何參數提供一個參數。然後相應地調用它。

​​
+0

會給這個去感謝! – Crazyd22

1

如果您正在使用WebClient類,則可以使用UploadFileAsync方法。你也可以將一些信息從一種表單傳遞給另一種表單。

窗體2

添加一個簡單的構造到窗體2。

public Form2(string path) { // ... } 

Form1中

Form2 frm2 = new Form2("Path");