我正在Azure上部署我的Web角色应用程序。有一个小代码块需要在单独的线程中执行。我的代码块如下:
private static bool Method1()
{
...
...
System.Threading.Thread thread = new System.Threading.Thread(() => Method2());
thread.Start();
...
...
}
private static void Method2()
{
....
....
}
我在本地系统中测试了这段代码。它工作正常。为了检查确切的结果,我将代码写入日志文件中。在Azure云服务上,Method1()执行时没有任何错误。甚至代码块在定义和启动线程之前和之后成功执行。但是从不执行Method2()。
天蓝云服务不允许线程化吗?或者天蓝云服务的线程实现是不同的?
谢谢...
从你的描述中很难说出来。允许线程化。需要考虑的一件事是,您的计算机和Azure VM之间的时间安排会有所不同。
我可以考虑的一个可能原因是在线程有机会被安排运行之前的进程终止 - 一个杀死你的应用程序或主线程退出的异常。