IronPython中独立线程内的Python代码为何无法输出内容?
问题原因与解决方法
你的问题出在主线程提前退出,导致子线程被强制终止:
-.NET 默认创建的是后台线程,当所有前台线程(比如程序的主线程)执行完毕后,进程会直接终止,后台线程不管有没有执行完都会被销毁,所以你看不到Loop方法的输出。
两种解决办法
1. 让主线程等待子线程执行完毕
在启动线程后调用Join()方法,阻塞主线程直到子线程完成:
def Loop(): for i in range(0,10): print(i) Updating_Thread = Thread(ThreadStart(Loop)) Updating_Thread.Start() Updating_Thread.Join() # 等待子线程执行完成后,主线程再继续退出
2. 将子线程设置为前台线程
前台线程会阻止进程终止,只有所有前台线程都结束后,进程才会退出:
def Loop(): for i in range(0,10): print(i) Updating_Thread = Thread(ThreadStart(Loop)) Updating_Thread.IsBackground = False # 标记为前台线程 Updating_Thread.Start()
内容的提问来源于stack exchange,提问作者Hoernchen117
相关产品推荐
相关产品推荐

