Лучший способ вызвать какой-либо перекрестный потоковый код?

Затем с помощью reindex в качестве защиты

pd.DataFrame(dic).reindex(index=['value','attr','param'])
Out[553]: 
       common  fuzzy  adhead
value      18     14      13
attr       20     21      20
param      22     24      29
36
задан Brian Rasmussen 2 April 2009 в 20:35
поделиться

2 ответа

Вы также могли использовать дополнительный метод и лямбды для создания кода намного более чистым.

using System.ComponentModel;
public static class ISynchronizeInvokeExtensions
{
  public static void InvokeEx<T>(this T @this, Action<T> action) where T : ISynchronizeInvoke
  {
    if (@this.InvokeRequired)
    {
      @this.Invoke(action, new object[] { @this });
    }
    else
    {
      action(@this);
    }
  }
}

Таким образом, теперь можно использовать InvokeEx на любом ISynchronizeInvoke и смочь получить доступ к свойствам и полям класса с реализацией.

this.InvokeEx(f => f.listView1.Items.Clear());
91
ответ дан Samuel 27 November 2019 в 05:15
поделиться

Использовать ISynchronizeInvoke вместо Control. Это - интерфейс это Control реализации с Invoke/BeginInvoke/EndInvoke/InvokeRequired.

Альтернатива должна использовать SynchronizationContext.Current - который является что BackgroundWorker использование, я верю.

10
ответ дан Jon Skeet 27 November 2019 в 05:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: