0

我已经建立了一个流程来创建新任务来处理文件处理。在我收到未处理的异常错误并单击继续按钮时出现问题,主进程继续运行。现在我还发现在子任务中我遇到了文件冲突错误,并且由于任务作为单独的 .exe 运行,我的印象是一切都是线程安全的。所以这里的第一个问题是在主流程中创建任务。GProcess 是一个完整的项目,由 6 个类组成。这是作为类库引用添加到主流程类form1

Public Class Form1
 ..Private parser as GProcess.module = new GProcess.module()

dim factory as new taskfactory
factory.startnew(address of parser.main)

try
   task.waitall()
catch ae as aggregateexception
   for each ex in ae.innerexceptions
     logs.insert(ex.message.tostring)
   next
finally
  parser.ctsources.cancel()
end try

现在我从 msdn 得到了聚合异常的东西,不知道如何实现它,但基本上我想要的是取消导致异常的任务并继续运行所有其他任务并捕获被取消任务正在处理的文件并保存名称到我的日志,或者如果可能的话,用它正在处理的文件重新启动该任务..

现在对于第二个问题,当任务访问一个类时,我创建了一个 xmlwriter,该任务应该创建它自己的实例,所以不确定为什么会发生冲突,但如果确实发生了,任务/线程是取消还是取消它等待访问文件。

   ....
public class filecleaner

private xmlfile as string = directoryPath & filename
private xwriter as xmltextwriter = new xmltextwriter(xmlfile,nothing)
....
4

1 回答 1

1

对于你的第二个问题,任务不会等待访问文件,它会抛出一个异常,你必须捕捉,暂停,然后再试一次(我猜有一些计数限制)如果你想要那种行为。

首先,我不确定这里有足够的内容。例如,为什么说“任务作为单独的 .exe 运行”?例如,如果您只是启动 backgroundworker 对象,它们不会作为单独的“进程”(即 exe)运行,它们只是线程。

这段代码中没有任何内容表明您正在为您的任务获得单独的进程,但是,根据 startne 中发生的情况,我认为这是可能的。

于 2011-04-18T16:03:36.553 回答