Silverlight: остановить поток, ожидая отзывов пользователей - PullRequest
1 голос
/ 27 мая 2010

Можно ли останавливать текущий поток, пока пользователь не нажмет некоторые кнопки в Silverlight? Э.Г.

var clicked = false;
ShowDialog(EventOnClosed => clicked = true);
while (!clicked) {};
return;

P.S. Я знаю правильный путь. Мне просто любопытно, есть ли способ остановить и затем продолжить выполнение Silverlight.

P.P.S. Просто чтобы быть более конкретным. Представьте себе проект, где javascript alert () используется для сообщений. Как заменить "return Invoke (" alert ('') ")" на почтовые ящики Silverlight? Вы меняете все 500 мест, чтобы использовать правильную асинхронную технику?

Ответы [ 2 ]

3 голосов
/ 27 мая 2010

Нет, это не так, и вы, конечно, не захотите так связывать процессор, даже если вы это сделаете.

В Silverlight вам действительно нужно привыкнуть к программированию асинхронным способом.

void SomeContainingFunc(Action callBack)
{
  ShowDialog(EventOnClosed => callBack()))
} 

Независимо от того, что вызывает и хочет, чтобы код продолжался после завершения асинхронной операции: -

void SomeCaller()
{
  // ... do some intial stuff here
  Action callBack = () =>
  {
    //.. code to happen after async call completed
  }
  SomeContainingFunc(callBack);
}
1 голос
/ 27 мая 2010

То, что вы пытаетесь сделать, это остановить (или, точнее, приостановить) поток пользовательского интерфейса - это не очень хорошая идея ни при каких обстоятельствах, особенно если вы ждете, когда пользователь что-то нажмет!

Просто сделай это "правильным способом".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...