Я много работаю с фоновым мастером, чтобы это не повлияло на мой поток пользовательского интерфейса Silverlight.Однако в функции DoWork я получаю следующее исключение:
UnauthorizedAccessException
«Недопустимый доступ между потоками».
Я знаю, что не могу получить доступ к потоку пользовательского интерфейса из BackgroundWorker,Тем не менее, это исключение возникает в этой строке:
ListBoxItem insert = new ListBoxItem();
Как это получить доступ к моему потоку пользовательского интерфейса ??
Вот фактический кусок кода, к которому я его сузил.Я в основном делаю работу по созданию списков элементов, которые я хотел бы вставить в список sourceList
:
void FillSourceList()
{
busyIndicator.IsBusy = true;
BackgroundWorker bw = new BackgroundWorker();
bw.DoWork += (sender, args) =>
{
List<ListBoxItem> x = new List<ListBoxItem>();
for (int i = 0; i < 25; i++ )
{
ListBoxItem insert = new ListBoxItem(); //<---Getting exception here
insert.Content = "whatever";
x.Add(insert);
}
args.Result = x;
};
bw.RunWorkerCompleted += (sender, args) =>
{
foreach (ListBoxItem insert in (List<ListBoxItem>)(args.Result))
sourceList.Items.Add(insert);
busyIndicator.IsBusy = false;
};
bw.RunWorkerAsync();
}