Ошибка «Метод не поддерживается» при попытке вызвать делегата - PullRequest
4 голосов
/ 18 августа 2010

У меня есть функция Run(string, string[]), которую я хочу запустить в отдельном потоке, поэтому я использую делегат и BeginInvoke:

private Func<string, string[], Stack<StackItem>> runner;

public MainPage()
{
    runner = Run;
}

private void btnStep_Click(object sender, RoutedEventArgs e)
{
    // snip
    runner.BeginInvoke(tbCode.Text, GetArgs(), null, null); // Exception here
    // snip
}

private Stack<StackItem> Run(string program, string[] args)
{
    return interpreter.InterpretArgs(parser.Parse(lexer.Analyse(program)), args);
}

Однако я получаю NotSupportedException was unhandled by user code ссообщение Specified method is not supported для метода BeginInvoke() делегата.Что не так?

Я использую Silverlight 4.0 и VS2010.

1 Ответ

7 голосов
/ 19 августа 2010

Асинхронный Delegate.BeginInvoke недоступен для делегатов в Silverlight.

Вы должны использовать BackgroundWorker вместо для выполнения чего-либо асинхронно.

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