首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pause for循环直到事件

pause for循环直到事件
EN

Stack Overflow用户
提问于 2012-08-19 01:31:09
回答 4查看 298关注 0票数 0

我正在从一个关闭文档的for循环中调用一个线程。问题是,循环继续并试图在线程中的代码完成之前打开另一个文档。如何暂停循环并等待文档关闭事件。谢谢。

编辑

这是我的代码。

代码语言:javascript
复制
    public void OpenFile()
    {
        for (int i = 0; i < 3; i++)
        {
            if (i != 1)
            {
                try
                {
                    uiApp.OpenAndActivateDocument(TargetPath(i));
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            ThreadPool.QueueUserWorkItem(new WaitCallback(CloseDoc));
        }
    }

    static void CloseDoc(object stateInfo)
    {
        try
        {
            SendKeys.SendWait("^{F4}");
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

我尝试在CloseDoc后面添加'Thread.Sleep(3000)‘,但没有成功。看起来“手动/自动重置事件类中的等待方法”将是我最好的选择。@GAPS你能详细说明一下吗?谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-08-19 01:41:51

请详细说明您的问题...为了回答您的问题,我建议您在manual/auto reset event classes中使用waitone方法。您可以通知您的等待线程您的文档已关闭,然后您可以继续。

AutoReset

ManualReset

票数 0
EN

Stack Overflow用户

发布于 2012-08-19 01:34:34

如果你必须等待每个线程完成,你可以在一个线程中调用所有代码。如果您希望避免冻结UI -请创建一个方法:

代码语言:javascript
复制
public void DoWork()
{
   foreach(/*  your code here*/)
   {
      // do work with documents
   }
}

并在非ui线程上运行它。

票数 1
EN

Stack Overflow用户

发布于 2012-08-19 01:34:29

如果没有看到您的代码,我无法回答您的特定情况,但可以查看lock关键字和/或等待句柄

请参阅此链接:

http://msdn.microsoft.com/en-us/library/ms173179.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12020725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档