我遇到了这样一个问题:我的函数需要很长时间才能运行。如果用户错误地运行了该函数,他必须等到该函数结束。例如,是否可以通过单击“Escape”来停止功能?我只是在它运行时无法向该函数发送任何内容。
谢谢,安德鲁。
我遇到了这样一个问题:我的函数需要很长时间才能运行。如果用户错误地运行了该函数,他必须等到该函数结束。例如,是否可以通过单击“Escape”来停止功能?我只是在它运行时无法向该函数发送任何内容。
谢谢,安德鲁。
错误的方法是在单独的线程上运行您的方法,并在需要时中止该线程。
正确的方法是将一些标记传递给方法,并且方法本身会不时检查它,如果标记表明它应该返回,则返回。您可以使用带有 CancellationToken 的 TPL 来做到这一点。
您可以在不同的线程上运行任务,如果用户想要完成任务,那么您可以调用 yourThread.Stop() 或 yourThread.Abort()
无论如何,你应该在杀死它之前控制你的进程,这样更安全。
希望有帮助!
您应该使用线程、BackgroundWorker或Task 并行库并行运行您的函数。
这将允许您保持用户界面响应并取消后台操作。