挂起主线程,执行一些回调,然后恢复主线程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了挂起主线程,执行一些回调,然后恢复主线程相关的知识,希望对你有一定的参考价值。

我需要做一些事情,执行一些回调事件,然后恢复我的例程。我给你写一个小例子。

void Do()
{
     DoPartOne();
     DoPartTwo();
}

void DoPartOne()
{
     StaticClass.Property = null;
}

void DoPartTwo()
{
     StaticClass.Property = something...
}

void MyCallBackOnEvent(MyEvent)
{
   if(StaticClass.Property == null)
       DoThis();
   else
       DoThat();
}

第一方,我的客户向服务发送命令,它以一些可变数量的事件响应我...。我需要首先执行PartTwo()方法的回调,但是我修复了该回调在完成后执行的情况Do()方法。您是否建议我其他实现?

答案

执行您的操作,然后等待变量变为true:


while(!workIsDone)
{
   Thread.sleep(100);
}

然后在您的事件中,在事件中设置变量,如下所示:

void MyCallBackOnEvent(MyEvent)
{  

    // Event has fired, so we can set workIsDone to true and then the main thread will stop the while loop, and continue normally.

    workIsDone = true;
}

以上是关于挂起主线程,执行一些回调,然后恢复主线程的主要内容,如果未能解决你的问题,请参考以下文章

事件循环(Event Loop)机制

Kotlin 协程协程的挂起和恢复 ② ( 协程挂起 和 线程阻塞 对比 )

Kotlin 协程协程的挂起和恢复 ② ( 协程挂起 和 线程阻塞 对比 )

Android 协程使用指南

Linux中线程的挂起与恢复(进程暂停)

线程的挂起和恢复 转载