【发布时间】:2017-11-02 02:27:44
【问题描述】:
我有一个这样的程序
var tfc = new TestFacade();
var t = new Thread(() => tfc.Run());
t.Start();
TestFacade 是一个 MarshalByRefObject 远程代理类。它有一个方法 (Run()) 执行 Oracle 过程。此过程可能需要至少几分钟才能完成。但是在执行的时候,用户可以取消这个操作。
我尝试使用 Abort,Suspend,... 甚至关闭程序,但线程刚刚在用户端停止,程序仍然运行并在服务器端创建结果。
和标题一样,我如何中止执行时间长的远程调用线程?
【问题讨论】:
-
你永远不应该打电话给
Thread.Abort(),除非你试图完全关闭你的应用程序(或进程)。中止线程可能会破坏 .NET 运行时。
标签: c# .net multithreading oracle remoting