程序要做一个500次的循环,直到循环中查询到想要的信息,或者次数到了结束。
现在的问题是会非常卡,如果一直没有信息就会一直卡。想用多线程,但搞不懂应该怎么弄、?
让子线程去做这个循环,lock一个code值,然后主线程怎么办呢?再做个循环去一直看这个code值吗????那不还是卡么

解决方案 »

  1.   

    一个后台线程就可以,每次执行完了休息1秒,成功了给主线程发个消息,Invoke一下也行。
      

  2.   

    委托
    BackgroundWorker 类允许您在单独的专用线程上运行操作。耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面 (UI) 似乎处于停止响应状态。如果您需要能进行响应的用户界面,而且面临与这类操作相关的长时间延迟,则可以使用 BackgroundWorker 类方便地解决问题。
    private void button1_Click(object sender, EventArgs e)
    {
        Thread th = new Thread(aa);
        th.Start();
    }delegate void somedle();
    private void aa()
    {
        if (this.InvokeRequired)
        {
            somedle sd = new somedle(aa);
            this.Invoke(sd);
            return;
        }
        ShowChar('');
    }
    public void ShowChar(char ch)
    {
        lock (this)
        {
            
        }