我们可以在它工作时中断一个方法吗?因为我有一个方法,在一个线程中我必须在按钮点击时中断该方法。我怎样才能做到这一点?
我尝试了Abort()方法,但它不起作用。因为Abort()是一种没有任何保证行为的方法。我的意思是如果我们使用该方法,我们不确定方法终止。
我只有一个像DoSomething()这样的方法名,因为我使用的是用C ++编写的DLL。因此,我没有方法的源代码。如果我单击一个按钮,则必须终止此方法
请给我一些建议。
答案 0 :(得分:1)
如果您有权访问该方法,请执行一个标记来中止它并编写解决问题的方法。这是我所做的概念伪C#示例:
private bool aborted = false;
public ResultClass Method()
{
for (i = 0; i < int.MaxValue && !aborted; i++)
{
// ...
}
if (aborted)
{
return null;
}
return new ResultClass(...);
}
public void Abort()
{
aborted = true;
}
这可能看起来像很多代码,但它更干净,你可以根据需要清理和处理东西。相反,中止一个线程是一个混乱的事情,只有在线程达到WaitSleepJoin
状态时才会发生。
如果你真的需要中止,至少做这样的事情:
try {
// abortable code
}
finally
{
// clean-up resources
}
答案 1 :(得分:0)
您可以在线程上使用Abort,而不是在方法上使用。如果要中断方法,请使用return。
答案 2 :(得分:0)
我已经解决了这个问题。如果有人有这样的问题,也许它可以在后面的页面中找到答案
我在下面的链接中获得了有关我的问题的一些信息
我找到了一个关于我的解决方式的例子
Using kernel32 CreateThread/TerminateThread inside Azure Worker Role
您可以使用此页面。这个页面包含很多关于PInvoke的代码部分。