我正在使用TaskPane在C#中编写PowerPoint插件。
此刻我想在窗格上打印一些内容 - 等待5秒 - 并打印不同的内容。
我的等待过程有问题。
如果我使用System.Threading.Thread.Sleep(5000)
,我会冻结所有PowerPoint界面,而不仅仅是我的窗格。 PowerPoint界面和我的任务窗格是同一个线程
如果我使用System.Timers.Timer
,那么我会创建第二个线程并触发错误,说我正在尝试访问另一个线程上的对象。
这是我的第二个案例的代码:
private void waitThisTime(int givenTime)
{
timer = new System.Timers.Timer(givenTime);
timer.Elapsed += OnTimedEvent;
timer.AutoReset = false;
timer.Enabled = true;
}
private void OnTimedEvent(Object source, System.Timers.ElapsedEventArgs e)
{
DisplayMessage(currentState); // DisplayMessage modifies textbox and button displayed on the panel
}
您是否知道如何仅冻结面板但不会触发异常?
修改
This question here处理多线程的访问问题。我的问题有点不同,因为它处理计时器,我只想冻结我的应用程序的一部分(只有面板而不是整个用户界面)
答案 0 :(得分:1)
试试这个:
System.Threading.Timer()