Я настроил процесс создания новых задач для обработки файлов. Возникла проблема, когда я получил ошибку необработанного исключения и, просто нажав кнопку «Продолжить», основной процесс продолжал выполняться. Теперь я также обнаружил, что в дочерней задаче у меня возникла ошибка конфликта файлов, и поскольку задачи выполнялись как отдельный .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
Теперь я получил функцию aggregateexception от msdn и не знаю, как ее реализовать, но в основном я хочу отменить задачу, которая вызвала исключение, и продолжить выполнение всех других задач и захватить файл, над которым работала отмененная задача, и сохраните имя в моих журналах или, если возможно, перезапустите задачу с файлом, над которым он работал ..
Теперь по второму вопросу у меня создается xmlwriter, когда задача обращается к классу, который должен создать свой собственный экземпляр, поэтому не уверен, почему происходит конфликт, но если это происходит, задача / поток просто отменить или ожидает доступа к файлу.
....
public class filecleaner
private xmlfile as string = directoryPath & filename
private xwriter as xmltextwriter = new xmltextwriter(xmlfile,nothing)
....