我有一個應用程序上傳文件到服務器,但是當我按上傳凍結,直到它完成,所以我想要做出另一種形式彈出說,上傳和做所有的上傳表單嵌套凍結主窗體。但要做到這一點,我需要能夠將選定的信息發送到其他表單。發送信息到另一個表單c#
我嘗試過使用BackgroundWorker,但那不起作用,窗體仍然凍結。
我有一個應用程序上傳文件到服務器,但是當我按上傳凍結,直到它完成,所以我想要做出另一種形式彈出說,上傳和做所有的上傳表單嵌套凍結主窗體。但要做到這一點,我需要能夠將選定的信息發送到其他表單。發送信息到另一個表單c#
我嘗試過使用BackgroundWorker,但那不起作用,窗體仍然凍結。
它凍結的原因是因爲您正在上傳與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();
}
從一種形式到另一種傳遞信息是直線前進,但這種形式也將導致一個鎖定在處理。如果這就是你想要做的,那麼只需創建一個構造函數來爲你想傳遞的任何參數提供一個參數。然後相應地調用它。
會給這個去感謝! – Crazyd22
如果您正在使用WebClient類,則可以使用UploadFileAsync方法。你也可以將一些信息從一種表單傳遞給另一種表單。
窗體2
添加一個簡單的構造到窗體2。
public Form2(string path) { // ... }
Form1中
Form2 frm2 = new Form2("Path");
請您發表一些代碼嗎? –
我認爲你可以定義一個事件,當它上傳一個文件時觸發。你也可以使用DoEvents。 –