У меня есть следующий код, который использует System.Threading.Tasks
Task ContinuewWith ждут возвращения ошибки
private async void UploadDocument(System.IO.FileInfo fileInfo)
{
var someTask = await Task.Run<bool>(() =>
{
// open input stream
using (System.IO.FileStream stream = new System.IO.FileStream(FileTextBox.Text, System.IO.FileMode.Open, System.IO.FileAccess.Read))
{
using (StreamWithProgress uploadStreamWithProgress = new StreamWithProgress(stream))
{
uploadStreamWithProgress.ProgressChanged += uploadStreamWithProgress_ProgressChanged;
// start service client
FileTransferWCF.FileTransferServiceClient client = new FileTransferWCF.FileTransferServiceClient();
//FileTransferClient.FileTransferServiceClient client = new FileTransferClient.FileTransferServiceClient();
// upload file
client.UploadFile(fileInfo.Name, fileInfo.Length, uploadStreamWithProgress);
// close service client
client.Close();
}
}
return true;
}).ContinueWith(r =>{
if(r.Result) LogText("Done!!");
});
}
Если я оставлю это и попытаться скомпилировать я получаю:
"Cannot assign void to an implicitly-typed local variable"** in the
var someTask
Так я тогда изменить var someTask
к Task someTask
но теперь Я получаю сообщение об ошибке:
"Cannot implicitly convert type 'void' to 'System.Threading.Tasks.Task'".
Любая подсказка о том, как d с этим?
Вы действительно должны следовать модели Стефана из вашего предыдущего вопроса. Это правильный способ разработки этой системы. Поскольку я прокомментировал это, запись не должна быть даже в «UploadDocument», в первую очередь, она должна быть в вызывающем. – Servy
Сторона не: ** Никогда не пишите 'async void' **. http://blogs.msdn.com/b/lucian/archive/2013/02/18/talk-the-new-async-design-patterns.aspx – SLaks
Что я должен использовать? Я видел в вашей ссылке, что void в порядке только в обработчиках, а у моего нет :(Спасибо – VAAA