1

在 C# 中加载主 UI 表单之前,我正在加载一些带有大量字符串的组合框(一个具有 +70,000 个值)。我在 tabControl 的单独 tabPages 中有组合框。我这样做是为了在显示 UI 表单时不会延迟显示选项卡和组合框。

现在,问题是第一个 tabPage 运行良好,并且显示得很快。但是,包含其他组合框的其他 tabPages 最多需要 10 秒才能完全呈现和显示。

在加载 UI 表单之前,我尝试使用 CreateControl 创建控件(组合框),但没有帮助。我知道 C# tabControls 有这种所谓的“延迟加载”行为。我想知道如何克服“懒惰”功能,以便在显示表单之前创建和呈现组合框,并且当我更改为其他标签页时,没有延迟?

[现在编辑了标签 - 这是与 WinForms 相关的。]

谢谢,

4

1 回答 1

0

我想线程将是克服你的问题的概念。您可以做的是在表单加载时启动一个新线程。让线程完成组合框填充或您需要的任何工作。

该线程将异步更新所有组合框。所以表单加载时不会有延迟。下面提供了线程的简短示例。我想这会帮助你百分之一!

public class MyClass
{
    private volatile bool _KillThread;

    // This method will be called when the thread is started.
    public void DoWork()
    {
        while (!_KillThread)
        {
            //Do your work
        }

    }
    public void RequestStop()
    {
        _KillThread= true;
    }

}

static void MyFunction()
{
        MyClassworkerObject = new MyClass();
        Thread workerThread = new Thread(workerObject.DoWork);

        // Start the thread.
        workerThread.Start();

        while (!workerThread.IsAlive);
             // allow the worker thread to do some work:
             Thread.Sleep(1);

        // Request that the worker thread stop itself:
        workerObject.RequestStop();

        //Wait untill the worker thread joins it self to main thread
        workerThread.Join();

}

您会在 MSDN 上找到类似的示例,因为我在一年前在我的应用程序中实现它时已经从那里引用了代码。

干杯!!

于 2013-07-19T04:43:04.067 回答