У меня есть простое тестовое приложение WinForms на C #. Используя следующий метод, я могу загрузить файл при вызове метода из обработчика события Click моей кнопки. Единственная проблема: моя форма Windows "зависает". Я не могу закрыть его с помощью кнопки Закрыть. Я должен завершить выполнение из среды IDE (Visual C # 2010 Express Edition). Вот два метода:
public void UploadFile(string FullPathFilename) {
string filename = Path.GetFileName(FullPathFilename);
try {
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(_remoteHost + filename);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(_remoteUser, _remotePass);
StreamReader sourceStream = new StreamReader(FullPathFilename);
byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
request.ContentLength = fileContents.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
response.Close();
requestStream.Close();
sourceStream.Close();
}
catch (Exception ex) {
MessageBox.Show(ex.Message, "Upload error");
}
finally {
}
}
который вызывается здесь:
private void btnUploadTxtFile_Click(object sender, EventArgs e) {
string username = "my_username";
string password = "my_password";
string host = "ftp://mywebsite.com";
try {
clsFTPclient client = new clsFTPclient(host + "/httpdocs/non_church/", username, password);
client.UploadFile(Path.GetDirectoryName(Application.ExecutablePath) + "\\myTextFile.txt");
}
catch (Exception ex) {
MessageBox.Show(ex.Message, "Upload problem");
}
}