.net 是安全线程还是已同步属性;“地位”;从IAsyncAction接口,以了解线程是否已完成它?

.net 是安全线程还是已同步属性;“地位”;从IAsyncAction接口,以了解线程是否已完成它?,.net,visual-c++,c++-cli,.net,Visual C++,C++ Cli,我想知道是否已从IAsyncAction类接口同步属性“Status”,因为我想使用它从另一个线程(主线程)检测该任务/线程是否已完成或仍在运行我可以确认,是的,是否已同步属性状态, 我怀疑这是如何处理的,所以我决定使用VisualStudio的调试器并对这个属性进行实验 因此,首先,我必须确认该值已分配给值为2的其他变量(已取消) 但使用反汇编特性,我遵循每一条汇编指令,直到找到何时使用属性变量的“get”函数 所以我找到了指令的当前状态以及如何传递给下一个变量 我们可以看到寄存器edx包含

我想知道是否已从IAsyncAction类接口同步属性“Status”,因为我想使用它从另一个线程(主线程)检测该任务/线程是否已完成或仍在运行

我可以确认,是的,是否已同步属性状态, 我怀疑这是如何处理的,所以我决定使用VisualStudio的调试器并对这个属性进行实验 因此,首先,我必须确认该值已分配给值为2的其他变量(已取消)

但使用反汇编特性,我遵循每一条汇编指令,直到找到何时使用属性变量的“get”函数

所以我找到了指令的当前状态以及如何传递给下一个变量

我们可以看到寄存器edx包含值2(已取消),但这是由指令处理的 锁定cmpxchg

根据这个链接:

。。允许以原子方式执行指令。。。 换句话说,这允许执行数据交换,而不受另一个线程的干扰


感谢所有人,我希望此帮助

您只对“已完成”、“错误”或“已取消”状态感兴趣。此时异步操作已完成,因此不再存在同步问题,无法再更改。感谢Hans的评论