所以这是我需要解决的大事。我有Visual C#应用程序。在这个应用程序中,用户输入数据并单击Execute。当他们点击执行时,核心方法开始在新线程中,在那个线程和方法是一个循环。不断地使用方法调用器,我向UserForm发送更新,循环实际上在做什么。例如,像这样,我在每个cicle中更新progressBar。
progressbar1.invoke((MethodInvoker)委托{progressbar1.value+=1;});
namespace textboxes
{
public class stop_loop
{
public bool is_canceled;
public void set_canceled(bool state)
{
this.is_canceled = state;
}
public bool get_canceled()
{
return this.is_canceled;
}
}
}
您应该使用CancellationToken。下面是一个计算阶乘的示例:
static void Main(string[] args)
{
CancellationTokenSource cancelTokenSource = new CancellationTokenSource();
CancellationToken token = cancelTokenSource.Token;
Task task1 = new Task(async () => await Factorial(5, token));
task1.Start();
Console.WriteLine("Type Y to break the loop:");
string s = Console.ReadLine();
if (s == "Y")
cancelTokenSource.Cancel();
Console.ReadLine();
}
static async Task Factorial(int x, CancellationToken token)
{
int result = 1;
for (int i = 1; i <= x; i++)
{
if (token.IsCancellationRequested)
{
Console.WriteLine("Canceled");
return;
}
result *= i;
Console.WriteLine("Factorial of {0} equals {1}", i, result);
}
}
问题内容: 这可能是我误读了我所读内容的一种情况,但是在Java中杀死线程的所有示例似乎都表明您必须发出信号以杀死自己。您不能在没有严重风险的情况下从外面杀死它。问题是,所有有关如何“礼貌地”要求线程死亡的示例都有某种循环,因此您要做的就是观察每次迭代中的标志。 因此,我得到的是一个线程,该线程执行的操作仅需要一段时间(一系列SQL查询)。我当然可以在每个步骤之后进行检查,但是它们并没有处于循环中
问题内容: 我正在使用从队列中连续读取的线程。 就像是: 停止此线程的最佳方法是什么? 我看到两个选择: 1-由于已弃用,因此我可以实现使用原子检查条件变量的方法。 2-将死亡事件对象或类似的对象发送到队列。当线程获取死亡事件时,它退出。 我更喜欢第一种方法,但是,我不知道何时调用该方法,因为可能有某种方法进入队列,并且停止信号可能首先到达(这是不希望的)。 有什么建议? 问题答案: 该(或因为它
本文向大家介绍C#停止线程的方法,包括了C#停止线程的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#停止线程的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。
我试图创建一个简单的pythongui(使用Tkinter),其中包含start按钮,在线程中运行while循环,以及停止while循环的stop按钮。 我对停止按钮有问题,它不会停止任何东西,一旦单击开始按钮,就会冻结GUI。 见下面的代码: 知道怎么解决这个问题吗?我肯定这是微不足道的,一定做了成千上万次,但我自己找不到解决办法。 谢谢大卫
我正在尝试编写一个线程,该线程将在我的主程序的后台运行,并监视某些内容。在某个时候,主程序应该向线程发出安全退出的信号。下面是一个以固定间隔将本地时间写入命令行的最小示例。 当“on”变量没有通过引用传递时,此代码会编译并产生预期的结果,只是线程永远不会终止。一旦变量通过引用传递,我就会收到编译器错误 您能建议一种修复此代码的方法吗? 额外的问题:哪里出了问题,为什么它可以与std::ref一起工
我正在做一个游戏,里面有背景音乐。我想添加一个启动和停止音乐的静音按钮,但我不知道怎么做。创建音乐的方法是: 我想做的是在按钮的动作处理程序中,我想添加一个静音按钮,如果用户愿意,它可以启动和停止音频。所以它应该是这样的:如果(e.getSource()==muteButton){//启动和停止音乐} 我该怎么做?谢谢你的帮助!