Я пытаюсь добавить постоянный цикл, работающий в фоновом режиме надстройки C # PPT. Поскольку я не хочу, чтобы PowerPoint зависал, я бы хотел воспроизвести функциональность DoEvents, которую обеспечивает VBA
То, что я пытаюсь сделать, выглядит примерно так: идея состоит в том, чтобы код печатал новую строку каждую секунду, пока PowerPoint продолжает нормально функционировать.
Сначала этот код работает правильно, однако он не решает проблему, которую я пытался решить, поскольку он останавливает PowerPoint при отправке любого события (например, MouseUp) даже без какого-либо метода, прослушивающего событие в коде.
int seconds = 0;
time = DateTime.Now.Second + 1;
while (true)
{
if (DateTime.Now.Second >= time)
{
Debug.WriteLine(seconds + " seconds have passed since the addin started");
time = DateTime.Now.Second + 1;
}
System.Windows.Forms.Application.DoEvents();
}
Я протестировал подход непосредственно внутри движка VBA PowerPoint, и он работает как задумано (Примечание: 1/86400 эквивалентно добавлению секунды к датам Ms Office)
Sub countTime()
nextTime = Now + (1 / 86400)
counter = 0
Do While True
If Now >= nextTime Then
counter = counter + 1
Debug.Print (counter & " seconds have passed since the start")
nextTime = Now + (1 / 86400)
End If
DoEvents
Loop
End Sub
Я не могу получить доступ к методу DoEvents в PowerPoint из надстройки C #. Есть ли способ повторить это?