删除文件夹时正在中止线程

时间:2010-09-09 06:42:55

标签: c# asp.net

我正在使用Web服务方法运行脚本,它会在脚本运行之前或之后生成一些我想要删除文件夹的不需要的文件夹。

ProcessStatus newProcess =
                    new ProcessStatus(
                            String.Format(
                                "{0}, started:{1}",
                                projectName, DateTime.Now.ToString("HH:m:ss")
                                )
                            );
newProcess.buildData = new BuildHelper(deviceName, projectName, owner, deviceFolder,  Constants.serverContentpath, Constants.buildInfoFilePath);
ProcessStatuses processStatus = new ProcessStatuses();
ArrayList allProcesses = processStatus.Get();
ArrayList.Synchronized(allProcesses).Add(newProcess);
ThreadPool.QueueUserWorkItem(
                        new WaitCallback(processStatus.startProcessing),
                        new object[] { newProcess, allProcesses }
                        );
//Thread th = new Thread(new ThreadStart(delegate {
//    processStatus.startProcessing(new object[] { newProcess, allProcesses });
//}));
//th.Start();
processStatus = null;
newProcess = null;
_deviceBuildMonitor = null;

1 个答案:

答案 0 :(得分:2)

首先让我按照我的理解重新构建你的问题。

您的网络服务已经创建了一些临时文件,您可以通过繁殖来进行一些清理操作。

如果您的Web服务托管在IIS服务器上,则问题可能是IIS App池在删除(文件更改通知)目录时重新启动。尝试在应用启动事件中或尝试删除目录

之前执行此代码
var theRuntime = typeof(HttpRuntime).GetField("_theRuntime", BindingFlags.NonPublic | BindingFlags.Static).GetValue(null);
var fcmField = typeof(HttpRuntime).GetField("_fcm", BindingFlags.NonPublic | BindingFlags.Instance);

var fcm = fcmField.GetValue(theRuntime);
fcmField.FieldType.GetMethod("Stop", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(fcm, null);