这是否可以锁定一个线程的方法并强制另一个线程走得更远,而不是等到第一个线程完成?这个问题可以通过静态线程或一些适当的模式来解决,其中一个实例是下面提到的服务。
出于演示目的,可以使用如下静态布尔值来完成。
public class SomeService
{
private readonly IRepository _repo;
public SomeService(IRepository repo)
{
_repo = repo;
}
private Thread threadOne;
public static bool isLocked { get; set; }
public void StartSomeMethod()
{
if(!isLocked)
{
threadOne = new Thread(SomeMethod);
isLocked = true;
}
}
public void SomeMethod()
{
while(true)
{
lots of time
}
...
isLocked = false;
}
}
我想避免用户意外单击两次启动并且意外第二个线程在第一次完成后立即启动的情况。
米脂
哆啦的时光机
慕的地6264312
相关分类