Потокобезопасное добавление подэлемента в элемент управления ListView - PullRequest
0 голосов
/ 24 сентября 2011

Я пытаюсь преобразовать старое приложение Windows Forms в приложение WPF.

Следующий код больше не компилируется в C # .NET 4.0:

// Thread safe adding of subitem to ListView control
private delegate void AddSubItemCallback(
  ListView control,
  int item,
  string subitemText
);

private void AddSubItem(
  ListView control,
  int item,
  string subitemText
) {
  if (control.InvokeRequired) {
    var d = new AddSubItemCallback(AddSubItem);
    control.Invoke(d, new object[] { control, item, subitemText });
  } else {
    control.Items[item].SubItems.Add(subitemText);
  }
}

Пожалуйста, помогите преобразовать этот код.

1 Ответ

0 голосов
/ 24 сентября 2011

Надеюсь, что следующий пост в блоге поможет вам.В WPF вы используете Dispatcher.CheckAccess / Dispatcher.Invoke:

if (control.Dispatcher.CheckAccess())
{
    // You are on the GUI thread => you can access and modify GUI controls directly
    control.Items[item].SubItems.Add(subitemText);
}
else
{
    // You are not on the GUI thread => dispatch
    AddSubItemCallback d = ...
    control.Dispatcher.Invoke(
        DispatcherPriority.Normal,
        new AddSubItemCallback(AddSubItem)
    );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...