2011-04-18 43 views
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得到了aggregateexception的事情,不知道如何实现它,但是基本上我想做什么是取消导致异常任务并contiue运行所有其他任务,并捕获文件,取消的任务正在工作,并将名称保存到我的日志,或者如果可能的话,用它正在处理的文件重新启动该任务..

现在对于第二个问题,我有一个xmlwriter被创建时,任何应该创建它自己的实例的任务访问类,所以不知道为什么会有冲突,但如果它发生,任务/线程只是取消或做wa它访问该文件。

.... 
public class filecleaner 

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

回答

1

关于第二个问题,任务不会等待访问文件,它会抛出一个异常,你必须抓住,稍停,然后再试一次(最多某些数量限制,我猜)如果你想要那种行为。

首先,我不确定是否有足够的可以继续下去。例如,你为什么说“这些任务以单独的.exe运行”?例如,如果你只是在背景工作者对象上旋转,它们不会作为单独的“进程”(即exe)运行,它们只是线程。

这段代码中没有任何东西会暗示你为你的任务获得了独立的进程,但是,根据在startne中发生的情况,我想这是可能的。

+0

感谢您的回复......我添加了一个上面的编辑,但也澄清..我已经将整个project.exe作为参考添加到主进程中。然后将此作为任务调用...我将使用您的对第二个问题的建议 – vbNewbie 2011-04-18 16:58:01