我创建了一个小演示项目来帮助我了解如何使用取消令牌。我知道您取消令牌并检查是否已请求取消,但是有没有办法可以检查取消是否已实现?在下面的示例中,我不想再次运行 Work(),直到 DoWork() 完成运行。
public class Program
{
public static CancellationTokenSource tokenSource;
private static void Main(string[] args)
{
while (true)
{
Work();
}
}
public static async void Work()
{
tokenSource = new CancellationTokenSource();
Console.WriteLine("Press any key to START doing work");
Console.ReadLine();
Console.WriteLine("Press any key to STOP doing work");
DoWork(tokenSource.Token);
Console.ReadLine();
Console.WriteLine("Stopping...");
tokenSource.Cancel();
}
public static async void DoWork(CancellationToken cancelToken)
{
while (true)
{
Console.WriteLine("Working...");
await Task.Run(() =>
{
Thread.Sleep(1500);
});
if (cancelToken.IsCancellationRequested)
{
Console.WriteLine("Work Cancelled!");
return;
}
}
} …Run Code Online (Sandbox Code Playgroud) 尝试创建我的第一个 Xamarin 前台服务,但找不到合适的示例。Microsoft 文档中的示例似乎不完整或使用了折旧的 Notification.Builder:
https://docs.microsoft.com/en-us/xamarin/android/app-fundamentals/services/foreground-services
我发现了一个似乎是最新的代码示例,但我正在努力通过查看代码来破译它的工作原理:
谁能给我一个如何创建基本前台服务的例子?