将uploadfile转换为uploadfileasync c#

时间:2012-12-17 14:48:51

标签: c# winforms asynchronous

您好我正在尝试通过c#将文件上传到我的网络服务器并且我在上传文件时遇到问题我的应用程序冻结,直到文件上传完毕并且我想上传它Async但我似乎无法获得在这里工作的代码是代码和我不断得到的错误。

此代码有效,但会冻结表单。

WebClient wc = new WebClient();
wc.Credentials = new System.Net.NetworkCredential(TxtUsername.Text, TxtPassword.Text);
string Filename = TxtFilename.Text;
string Server = TxtServer.Text + SafeFileName.Text;
wc.UploadFile(Server, Filename);

但是,如果我执行此代码,我会收到错误。

WebClient wc = new WebClient();
wc.Credentials = new System.Net.NetworkCredential(TxtUsername.Text, TxtPassword.Text);
string Filename = TxtFilename.Text;
string Server = TxtServer.Text + SafeFileName.Text;
wc.UploadFileAsync(Server, Filename);

我尝试将其设为异步

时出现此错误
Error 1 The best overloaded method match for System.Net.WebClient.UploadFileAsync(System.Uri, string)' has some invalid arguments.
Error 2 Argument 1: cannot convert from 'string' to 'System.Uri'

2 个答案:

答案 0 :(得分:6)

更改行

wc.UploadFileAsync(Server, Filename);

wc.UploadFileAsync(new Uri(Server), Filename);

UploadFileAsync不接受字符串参数,因此您需要从服务器地址创建Uri。有关详细信息,请参阅MSDN Docs

答案 1 :(得分:3)

正如卡米所说。此外,您可能希望处理UploadFileCompleted事件。

示例:

wc.UploadFileCompleted += (o, args) =>
{
    //Handle completition
};
wc.UploadFileAsync(new Uri(Server), Filename);