В моем приложении я устанавливаю / получаю данные в устройствах через инфракрасный ридер.
Когда я запускаю свое приложение, у меня есть два случая:
- Устройство находится здесь все время, я возвращаю объект 'RETOUR'
- Устройство было здесь в начале, но кто-то отключил его, когда моя функция работала.
Я бы хотел вернуть объект типа 'RETOUR' в обоих случаях.
Точка входа обязательно является такой функцией:
«Публичная асинхронная задача XXX (динамический ввод)»
Я строю фонового работника, который находит, когда устройство отключено.
Это работает, но я не знаю, как заставить мою асинхронную задачу возвращать объект, когда вызывается RunWorkerCompletedEventHandler.
Код запуска Backgroundworker в каждой функции «асинхронная задача»:
bw = new BackgroundWorker();
bw.WorkerSupportsCancellation = true;
bw.DoWork += new DoWorkEventHandler(
delegate (object o, DoWorkEventArgs args)
{
// called when AwaitEpdRemoval have response
stack.EpdRemoved += (object sender, ConnectEventArgs e) =>
{
// Set the object i want to return
STATIC_FUNCTION.mon_retour.GestionErreur("154", null);
};
// While AwaitEpdRemoval don't throw EpdRemoved object
while (true && STATIC_FUNCTION.mon_retour.code_retour != "154")
{
try
{
if (bw.CancellationPending) {
args.Cancel = true;
break;
}
// If device still here
stack.AwaitEpdRemoval(discoveredEpd);
}
catch (Exception e)
{
// If the device is still the here the DLL throw error
System.Threading.Thread.Sleep(100);
}
}
});
// when the worker is completed
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(
delegate (object o, RunWorkerCompletedEventArgs args)
{
// for now i close the app, but what i want is return STATIC_FUNCTION.mon_retour
System.Environment.Exit(1);
});
bw.RunWorkerAsync();
Пока он закрывает все, но я хочу, чтобы он остановил другой код и возвратил объект "STATIC_FUNCTION.mon_retour"
Как я могу это сделать (даже если мне нужно переписать что-нибудь).