Я работаю над OPC Client. Этот клиент вызывает процедуру, которая, в свою очередь, вставляет несколько строк в одну таблицу «queue».
У этого клиента также есть другой поток, который время от времени открывает таблицу «очереди» и обновляет значения элементов OPC на основе элементов в таблице. После обновления каждого значения поток очищает строку из таблицы «очередь».
Что я хочу: я вызываю процедуру, она вставляет значения в очередь и ждет, пока другой поток не очистит введенные значения, чтобы сделать что-то еще.
Возможно ли это как-нибудь? В других языках я бы подумал об использовании чего-то вроде цикла while с Sleep () s, проверяя, очищены ли строки, до тех пор, пока он не выйдет из цикла.
Спасибо за любые идеи
-Edit:
Я попытаюсь уточнить еще немного:
Допустим, есть 3 разных типа работ: "ВСТАВИТЬ", "ОБНОВИТЬ" и "ЗАКЛЮЧИТЕЛЬНАЯ ОБРАБОТКА".
У меня может быть много разных заданий типа «ВСТАВКА», каждое из которых вставляется в очередь со своим уникальным идентификатором:
Insert (ID=1, OPCTag=1)
Insert (ID=1, OPCTag=2)
Insert (ID=1, OPCTag=3)
Insert (ID=2, OPCTag=1)
Insert (ID=2, OPCTag=2)
Insert (ID=2, OPCTag=3)
Существует только одно задание «ОБНОВИТЬ», постоянно читающее и очищающее очередь.
Я застрял в части "ФИНАЛЬНАЯ ОБРАБОТКА", так как у меня тоже будет несколько заданий этого типа, как и в случае "ВСТАВКИ".
Я не знаю, как вызвать правильное задание "ФИНАЛЬНАЯ ОБРАБОТКА", которое связано с "ИД ВСТАВКИ", после того как все строки с этим ИД ВСТАВКИ были очищены с помощью "ОБНОВЛЕНИЕ".
Скажите, что мое задание "ОБНОВЛЕНИЕ" очистило все строки с "ИД = 1". Когда очищается последняя строка с ID = 1, мне нужно запустить процедуру FinalProcessingID1. То же самое, когда ID = 2, все очищается.