gpt4 book ai didi

c# - 分配给未执行的新线程的方法

转载 作者:行者123 更新时间:2023-12-03 13:20:26 25 4
gpt4 key购买 nike

我有几个绑定(bind)到 LDAP 数据源的 DropDownLists。由于它们需要一段时间才能加载,因此我想尝试减轻多线程对性能的影响。但是,当我运行以下代码时,我分配给线程的方法似乎没有执行。在编译或运行时没有抛出任何错误。 DropDownLists 只是保持未绑定(bind)。如果我非线程,这两种方法都可以正常工作。

if (DropDownListOwner.Items.Count == 0)
{
Thread t = new Thread(BindDropDownListOwner);
t.Start();
}

if (DropDownListAddEditRecipients.Items.Count == 0)
{
Thread t2 = new Thread(BindDropDownListAddEditRecipients);
t2.Start();
}

// Delegate Methods

public void BindDropDownListOwner()
{
List<KeyValuePair<string, string>> emp = EmployeeList.emplList("SAMAccountName", "DisplayName");
DropDownListOwner.DataSource = emp.OrderBy(item => item.Value);
DropDownListOwner.DataTextField = "Value";
DropDownListOwner.DataValueField = "Key";
DropDownListOwner.DataBind();
}

public void BindDropDownListAddEditRecipients()
{
List<KeyValuePair<string, string>> emp2 = EmployeeList.emplList("Mail", "DisplayName");
DropDownListAddEditRecipients.DataSource = emp2.OrderBy(item => item.Value);
DropDownListAddEditRecipients.DataTextField = "Value";
DropDownListAddEditRecipients.DataValueField = "Key";
DropDownListAddEditRecipients.DataBind();
}

最佳答案

看起来您正在尝试从另一个线程更新 UI 组件。那是行不通的。
当您尝试设置它的属性时,该组件应该抛出异常,并且您的线程就死了。

您可以在其他线程上进行资源密集型计算,然后使用主线程更新 UI。为此,对于 WPF,您可以使用 Dispatcher 类,用于控件本身的 WinForms BeginInvoke 方法。

关于c# - 分配给未执行的新线程的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18384211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com