C#如何使用异步编程把一个方法改成不能被多次调用的具体代码
以下是一个示例代码,演示如何使用异步编程将一个方法改为不能被多次调用的:
using System;
using System.Threading.Tasks;
public class Program
{
private static bool isRunning = false;
public static async Task Main(string[] args)
{
await RunAsync();
await RunAsync(); // 尝试多次调用
}
public static async Task RunAsync()
{
if (isRunning)
{
Console.WriteLine("方法正在运行,不能重复调用!");
return;
}
isRunning = true;
Console.WriteLine("开始执行方法...");
// 模拟耗时操作
await Task.Delay(2000);
Console.WriteLine("方法执行完毕。");
isRunning = false;
}
}
在这个示例代码中,我们使用了一个静态变量 isRunning 来表示方法是否正在运行。在方法开始执行时,我们首先检查 isRunning 是否为 true,如果是,则说明方法正在运行,不能重复调用,直接返回。如果 isRunning 为 false,则将其设置为 true,表示方法正在运行。方法执行完毕后,将 isRunning 设置为 false,表示方法已经执行完毕。
在 Main 方法中,我们尝试多次调用 RunAsync 方法,但是由于方法中加入了异步编程的特性,每次调用都会等待方法执行完毕后再进行下一次调用。因此,我们可以保证 RunAsync 方法不会被多次调用
原文地址: http://www.cveoy.top/t/topic/hppp 著作权归作者所有。请勿转载和采集!