C# &引用;“线程正在中止”;关于WCF服务
我们正在尝试开发一个WCF服务来执行长时间运行的任务。实现长时间运行任务的方法生成一个新任务,如果任务已成功排队,则该方法将立即返回到客户端(在本例中为.aspx页面)。该服务在其自己的应用程序池上运行,没有回收和单InstanceContextMode WCF服务 现在的问题是,在执行testThreadAbortException方法时,我捕获了线程被中止的异常(这总是在客户端退出事件处理程序方法之后发生)。奇怪的是,这个异常只在第一次抛出(即,如果我再次按下run按钮,代码执行良好)。我必须重新启动本地IIS才能再次复制错误C# &引用;“线程正在中止”;关于WCF服务,c#,multithreading,wcf,service,abort,C#,Multithreading,Wcf,Service,Abort,我们正在尝试开发一个WCF服务来执行长时间运行的任务。实现长时间运行任务的方法生成一个新任务,如果任务已成功排队,则该方法将立即返回到客户端(在本例中为.aspx页面)。该服务在其自己的应用程序池上运行,没有回收和单InstanceContextMode WCF服务 现在的问题是,在执行testThreadAbortException方法时,我捕获了线程被中止的异常(这总是在客户端退出事件处理程序方法之后发生)。奇怪的是,这个异常只在第一次抛出(即,如果我再次按下run按钮,代码执行良好)。我必
在访问hash.web文件之后,它的Mcafee antivirus似乎已经停止了。与过程监视器确认。想想看。。。。。
欲了解更多信息,请查看帖子。问题与我的类似。因为在访问hash.web文件之后,似乎它的Mcafee antivirus。与过程监视器确认。想想看。。。。。
欲了解更多信息,请查看帖子。问题与我的问题类似。您是否正在采取措施使IIS工作人员被回收利用?这听起来像是appdomain卸载。这个线程池任务被中止没有其他原因。不,我不这么认为。客户端回收选项是否会以任何方式影响服务的应用程序池?Ok@usr您是对的。经过进一步调查,运行wcf服务的appdomain似乎正在卸载。实际原因是:“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\iishost\U wcf\U etlschedulerservice\fad2fd98\ca78657a\hash\hash.web HostingEnvironment启动关机HostingEnvironment导致关机”。如果您对此有任何评论,我们将不胜感激……看起来好像有什么东西写入了应用程序,导致它被回收。这可能是代码中的一个bug。您可以使用procmon.exe捕获有问题的处理。您是否正在采取任何措施使IIS工作进程被回收?这听起来像是appdomain卸载。这个线程池任务被中止没有其他原因。不,我不这么认为。客户端回收选项是否会以任何方式影响服务的应用程序池?Ok@usr您是对的。经过进一步调查,运行wcf服务的appdomain似乎正在卸载。实际原因是:“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\iishost\U wcf\U etlschedulerservice\fad2fd98\ca78657a\hash\hash.web HostingEnvironment启动关机HostingEnvironment导致关机”。如果您对此有任何评论,我们将不胜感激……看起来好像有什么东西写入了应用程序,导致它被回收。这可能是代码中的一个bug。您可以使用procmon.exe捕获有问题的处理
[OperationContract]
public bool testThreadAbortException()
{
Task.Factory.StartNew
(
() =>
{
try
{
//long operation
int i = 0;
while (i < 250)
{
int j = 0;
while (j < 2000000) j++;
i++;
}
ThreadState state = Thread.CurrentThread.ThreadState;
string dummy = "finished ";
}
catch(Exception exception)
{
ThreadState state = Thread.CurrentThread.ThreadState;
string msg = exception.Message;
Exception inner = exception.InnerException;
}
}
);
return true;
}
protected void btnRun_Click(object sender, EventArgs e)
{
_default.IISHOST_ETLSchedulerServiceReference.ETLSchedulerServiceClient client = new _default.IISHOST_ETLSchedulerServiceReference.ETLSchedulerServiceClient();
bool ret = client.testThreadAbortException();
}