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