【问题标题】:Win form slow to draw controls when shifting tabpages移动标签页时赢得表单绘制控件缓慢
【发布时间】:2014-11-26 23:26:24
【问题描述】:

我使用 winform C#,在选择标签页时尝试将数据序列化为 XML。 当我切换到 tabPageShowHobby 之类的标签页时,winforms 上的所有控件(文本框等)尚未绘制(绘制缓慢)

我猜是数据到 XML 的序列化减慢了在表单上绘制控件的速度。如何解决这个问题?

 private void tabControlMyHobbies_SelectedIndexChanged(object sender, EventArgs e)
 {
    if (tabControlShowMyHobbies.SelectedTab == tabPageShowHobby)
        writeDataToXml();
    else
    if (tabControlShowMyFood.SelectedTab == tabPageFood)
    {
        do something else...
    }
}

【问题讨论】:

  • 在后台线程上执行此操作。
  • 只是解决问题,插入 tabControlRFMeasurement.Update() 这样延迟就不那么明显了。你只需要在需要几秒钟的时候做激烈的事情。它永远不会。

标签: c# multithreading winforms performance serialization


【解决方案1】:

使用Task 将您的数据写入 XML。例如:

if (tabControlShowMyHobbies.SelectedTab == tabPageShowHobby)
{
    Task.Factory.StartNew(() => { writeDataToXml(); });
}
else

如果您使用的是不支持任务的早期版本的 C#,您可以调用 ThreadPool.QueueUserWorkItem:

ThreadPool.QueueUserWorkItem((s) => { writeDataToXml(); });

其中任何一个都将在后台线程上执行 writeDataToXml 方法,让您的 UI 线程空闲。

【讨论】:

    猜你喜欢
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 2011-05-15
    • 2017-05-10
    • 1970-01-01
    相关资源
    最近更新 更多