Я пробовал искать и искать это, но, возможно, я искал неправильную вещь.C# сборка и форма обновления Live
Я создаю своего рода панель управления, где я могу добавить некоторые DLL-файлы для динамической загрузки. Для меня не проблема загружать библиотеки DLL и никаких проблем, чтобы запустить его - я использую «Activator.CreateInstance», чтобы сделать это на данный момент.
Метод делает именно то, что я хочу, чтобы он делал.
... Но мне нужна помощь паре вещей:
1: Когда я выполнение библиотеки DLL, форма морозильная, даже если я бег его в потоке - Как сделать Я избегаю этого?
2: Мне нужно уметь читать текущее состояние DLL, жить - файлы DLL сделаны с суперклассом, поэтому я могу прочитать «CurrentStatus» -property. Возможно ли прочитать этот статус запущенных файлов? Мне кажется, так как программа ждет завершения DLL, и это заставляет ее замораживаться.
Надеюсь, некоторые из вас могут мне помочь.
Заранее спасибо :)
Edit: Добавление код
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, curJob.Scheduler_JobAssemblyName + ".dll");
Assembly assembly = Assembly.LoadFile(path);
GenericSchedulerJob o = (GenericSchedulerJob)Activator.CreateInstance(Type.GetType(curJob.Scheduler_JobAssemblyName + "." + curJob.Scheduler_JobAssemblyName + ", " + curJob.Scheduler_JobAssemblyName, true));
Thread thread = new Thread(() => ExecuteDLL(ref o, "RunJob", row));
thread.Start();
while (!o.JobFinished)
{
// Do something (update status, etc.)
}
private string ExecuteDLL(ref GenericSchedulerJob job, string methodName, DataGridViewRow row)
{
string returnVal;
if (job != null)
{
// Get method
MethodInfo mi = job.GetType().GetMethod(methodName); // Get method info
if (mi != null)
{
// Let's start ...
returnVal = (string)mi.Invoke(job, null); // Execute method with parameters
// job is the SuperClass, where I can read the status from
}
else
{
returnVal = "Method <" + methodName + "> not found in class."; // Error ..
}
}
else
{
returnVal = "Class not found in external plugin."; // Error ..
}
return "";
}
к сожалению, мой хрустальный шар для ремонта, вы будете необходимо показать код. – nvoigt
Выполнено, первый фрагмент кода находится в файле timer_tick, так как он является планировщиком, который работает с определенным интервалом – Oxholm