iOS - Как настроить прямоугольник обрезки в UIImagePickerController при включенном разрешении редактирования?

Я привел пример использования System.Windows.Threading.Dispatcher в Windows Form в ответе на вопрос «Параллельное программирование с использованием TPL на WinForms», поскольку предыдущий ответ на ваш вопрос :

Если вы уверены, что находитесь в потоке пользовательского интерфейса (например, в обработчике button.Click), Dispatcher.CurrentDispatcher предоставляет диспетчер потоков UI, который вы можете использовать для отправки из фонового потока в пользовательский интерфейс как обычно.

blockquote>

либо вводит в заблуждение, либо запутывает, либо не имеет конкретного контекста использования:

  • button.Click обработчик не гарантирует, что он включен в поток пользовательского интерфейса;
  • , если вы не используете поток пользовательского интерфейса, по-прежнему можно использовать disparcher из потока пользовательских интерфейсов формы WinForms

. Можно получить диспетчер потока WinForm UI:

Dispatcher dispatcherUI = Dispatcher.CurrentDispatcher;

в любом обработчике событий нажатия кнопки или в другом месте (в конструкторе форм)

И затем использовать его для выполнения в пользовательском интерфейсе из других потоков, более подробно см. пример ниже в мой ответ :

private void button1_Click(object sender, EventArgs e)
{
  Dispatcher dispUI = Dispatcher.CurrentDispatcher;
  for (int i = 2; i < 20; i++)
  {
    int j = i;
    var t = Task.Factory.StartNew
           (() =>
      {
        var result = SumRootN(j);
        dispUI.BeginInvoke
            (new Action
                 (() => richTextBox1.Text += "root " + j.ToString()
                       + " " + result.ToString() + Environment.NewLine
                 )
             , null
            );
      }
           );
}

24
задан Cœur 14 January 2019 в 02:16
поделиться