Skip to content

Commit 0c96d6b

Browse files
committed
Исправлена ошибка с тем что в фоновых заданиях не срабатывали подписки на события
1 parent 985c65d commit 0c96d6b

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

src/OneScript.StandardLibrary/Tasks/BackgroundTasksManager.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,13 @@ public BackgroundTask Execute(IRuntimeContextInstance target, string methodName,
4747
var task = new BackgroundTask(target, methodName, parameters);
4848
_tasks.Add(task);
4949

50+
var eventProcessor = MachineInstance.Current.EventProcessor;
51+
5052
var taskCreationOptions = longRunning ? TaskCreationOptions.LongRunning : TaskCreationOptions.None;
5153
var worker = new Task(() =>
5254
{
5355
MachineInstance.Current.SetMemory(_runtimeContext);
56+
MachineInstance.Current.EventProcessor = eventProcessor;
5457
var debugger = _runtimeContext.Services.TryResolve<IDebugController>();
5558
debugger?.AttachToThread();
5659
try

tests/tasks.os

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
Перем глБлокировка;
44
Перем глСумма;
55

6+
Перем СобытиеВызвано;
7+
68
////////////////////////////////////////////////////////////////////
79
// Программный интерфейс
810

@@ -22,6 +24,7 @@
2224
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоВозвращаетсяРезультатДелегата");
2325
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоРаботаетБлокировка");
2426
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоКодМожетОпределитьИДЗадания");
27+
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоОбработчикиСобытийВызываютсяВФоновомЗадании");
2528

2629
Возврат ВсеТесты;
2730

@@ -68,8 +71,12 @@
6871

6972
КонецПроцедуры
7073

74+
Процедура Событие() Экспорт
75+
СобытиеВызвано = Истина;
76+
КонецПроцедуры
77+
7178
Процедура ТестДолжен_ПроверитьСозданиеЗаданий() Экспорт
72-
79+
7380
Задание = ФоновыеЗадания.Выполнить(ЭтотОбъект, "ПроцедураБезПараметров");
7481
юТест.ПроверитьИстину(ЗначениеЗаполнено(Задание.УникальныйИдентификатор));
7582
юТест.ПроверитьРавенство("ПроцедураБезПараметров", Задание.ИмяМетода);
@@ -263,3 +270,25 @@
263270
юТест.ПроверитьРавенство(Неопределено, ЗаданиеГлавногоПотока);
264271

265272
КонецПроцедуры
273+
274+
Процедура ТестДолжен_ПроверитьЧтоОбработчикиСобытийВызываютсяВФоновомЗадании() Экспорт
275+
276+
СобытиеВызвано = Ложь;
277+
278+
Параметры = Новый Массив;
279+
Параметры.Добавить("ЯСобытие");
280+
Параметры.Добавить(Новый Массив);
281+
282+
ДобавитьОбработчик ЭтотОбъект.ЯСобытие, Событие;
283+
284+
ФоновоеЗадание = ФоновыеЗадания.Выполнить(ЭтотОбъект, "ВызватьСобытие", Параметры);
285+
ФоновоеЗадание.ОжидатьЗавершения();
286+
287+
УдалитьОбработчик ЭтотОбъект.ЯСобытие, Событие;
288+
289+
юТест.ПроверитьИстину(
290+
СобытиеВызвано,
291+
"Ожидали что при вызове события в фоновом задании вызовется, а это не так"
292+
);
293+
294+
КонецПроцедуры

0 commit comments

Comments
 (0)