Я пишу надстройку (плагин) для Outlook.Мне нужен поток в моем плагине, чтобы он продолжал работать в течение всего срока службы, чтобы обрабатывать различные события и выполнять сетевые операции асинхронно.
Я написал фоновый поток для этой цели, который имеет бесконечный цикл для сохранения этогоживая нить.Это работает хорошо в нормальной ситуации.Но в следующих обстоятельствах прогноз не отвечает: -
Шаг 1 - Оставьте прогноз в рабочем состоянии.Шаг 2 - Блокировка системы Windows. Шаг 3 - Разблокировка через 1 минуту.
Когда я отключаю свой плагин из Outlook, он хорошо работает в тех же случаях.Я реализовал фоновый поток следующим образом: -
void BackgroundTaskManager::onDoWork(System::Object^ sender,
DoWorkEventArgs^ e)
{
try
{
while (e->Cancel == false)
{
mRemoveList->Clear();
for each(KeyValuePair<uint64_t, BackgroundTask^>^ task in
mTasks)
{
task->Value->checkStarted();
if (task->Value->isComplete)
{
mRemoveList->Add(task->Key);
}
}
for each(uint64_t taskID in mRemoveList)
{
mTasks->Remove(taskID);
DarkEventLog::Debug(String::Format("Completed task
removed. {0}", taskID));
}
Sleep(1000);
if (DarkClientManager::instance->isRunning == false)
break;
}
}
catch (System::Exception^ ex)
{
throw ex;
}
}
В приведенном выше коде, даже если mtasks и mRemovelists пусты, все же я мог видеть из отпечатков, что Outlook не отвечает, и этот поток запущен.Может кто-нибудь, пожалуйста, помогите мне, что я здесь делаю неправильно?