Причина его зависания заключается в том, что вы выполняете загрузку в том же потоке, что и графический интерфейс или основной поток.
Вы можете создать рабочий поток для обработки загрузки, чтобы графический интерфейс не блокировался при обработке загрузки.
Пример:
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();
}
Передача информации из одной формы в другую не вызывает затруднений, но эта форма также приведет к блокировке при обработке. Если это то, что вы хотите сделать, тогда просто создайте конструктор, который будет принимать параметры для всего, что вы хотите передать. Тогда назови это соответственно.
private string something = null;
public MySecondForm(string Something){
this.something = Something;
MessageBox.Show(this.something);
}
// Call this in the parent form
MySecondForm mySecondForm = new MySecondForm("hello world");
mySecondForm.Show();