LDAP データ ソースにバインドする DropDownLists がいくつかあります。読み込みに時間がかかるため、マルチスレッド化によってパフォーマンスへの影響を軽減したいと考えています。ただし、次のコードを実行すると、スレッドに割り当てたメソッドが実行されないようです。コンパイル時または実行時にスローされるエラーはありません。DropDownLists はバインドされていないままです。両方の方法は、スレッド化しない場合は正常に機能します。
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();
}