本文整理汇总了C#中System.Threading.Tasks.TaskScheduler.SwitchTo方法的典型用法代码示例。如果您正苦于以下问题:C# TaskScheduler.SwitchTo方法的具体用法?C# TaskScheduler.SwitchTo怎么用?C# TaskScheduler.SwitchTo使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Threading.Tasks.TaskScheduler
的用法示例。
在下文中一共展示了TaskScheduler.SwitchTo方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetFile
public static async Task<bool> GetFile(IRequest request, string fname, NetworkStream stream, Client.FileRepresentative representative, TaskScheduler scheduler)
{
// send the message to the server
await MessageUtils.SendMsg(request, stream);
// wait for and read the response
IResponse response = await MessageUtils.RecvMsg(stream) as GetFileResponse;
if (response == null)
return false;
if (response.IsOK)
{
var cts = new CancellationTokenSource();
EventHandler cancelEvent = (_, __) => cts.Cancel();
representative._cancel.Click += cancelEvent;
FileStream file = null;
try
{
file = new FileStream(RelativePath + fname, FileMode.OpenOrCreate);
var initialCount = 0;
Action<int> onProgress = async (count) =>
{
await scheduler.SwitchTo();
long newCount = Interlocked.Add(ref initialCount, count);
representative.UpdateBar((int)(((float)newCount / (float)response.ResponseSize) * 100));
};
await MessageUtils.ReceiveFile(stream, file, cts.Token, onProgress);
return true;
}
catch (Exception ex)
{
return false;
}
finally
{
representative._cancel.Click -= cancelEvent;
if (file != null)
file.Close();
}
}
return false;
}