C # / Silverlight: я хочу передать переменную, которую я хочу использовать в функции асинхронного обратного вызова - PullRequest
0 голосов
/ 29 сентября 2010

Хорошо, я использую HttpWebRequest BeginGetResponse и передаю асинхронную функцию обратного вызова, теперь я хочу передать также переменную / контекст, которую я хочу получить в своей функции обратного вызова. Как мне это сделать. Я довольно новичок в мире C # /. Net / Silverlight.

 HttpWebRequest absRequest = (HttpWebRequest)HttpWebRequest.Create(new Uri(urlToFetch));
        absRequest.BeginGetResponse(new AsyncCallback(onABSFetchComplete), absRequest);

здесь моя цель в приведенном выше вызове: я хочу передать переменную, и я хочу, чтобы мой обратный вызов вызывался с этой переменной. спасибо!

1 Ответ

2 голосов
/ 29 сентября 2010

Самый простой способ сделать это - использовать лямбда-выражение.Примерно так:

absRequest.BeginGetResponse(result => OnFetchComplete(result, foo, absRequest),
                            null);

, где OnFetchComplete теперь имеет подпись, которую вы действительно хотите (с дополнительными параметрами - в данном случае одна соответствует foo), а не простоIASyncResult.Вам больше не нужно указывать absRequest в качестве «контекста» для IAsyncResult, поскольку вы фиксируете его в лямбда-выражении.

Если вы не знакомы с лямбда-выражениями, вам следуетправда, потребуется время, чтобы разобраться с ними - не только для этого, но и для LINQ и всех других целей.

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