Я нашел несколько примеров в Интернете, но мне трудно с трудом запускать мой асинхронный вызов внутри рабочего стола. Я работаю в WP8. Чего не хватает?Запуск асинхронного кода внутри backgroundworker
Редактировать: Целью этого является обновление значений, которые я читаю время от времени. Скажем, 1 с.
Вот мой асинхронной код, он просто получает и хранит некоторые данные в провайдеров []:
public void getAllProvidersMethod()
{
try
{
sc.getAllProvidersCompleted += new EventHandler<ServiceReference1.getAllProvidersCompletedEventArgs>(callback);
sc.getAllProvidersAsync();
}
catch (System.Exception e)
{
MessageBox.Show(e.ToString());
}
}
public void callback(object sender, ServiceReference1.getAllProvidersCompletedEventArgs e)
{
try
{
providers = new String[e.Result.Length];
for (int i = 0; i < e.Result.Length; i++)
{
providers[i] = e.Result[i].ToString();
}
}
catch (System.Exception d)
{
MessageBox.Show(d.ToString());
}
}
Это мой фон работник:
private void networkWorker()
{
var obj = App.Current as App;
BackgroundWorker bw = new BackgroundWorker();
bw.DoWork += new DoWorkEventHandler(
delegate(object o, DoWorkEventArgs args)
{
BackgroundWorker b = o as BackgroundWorker;
getAllProvidersMethod();
});
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(
delegate(object o, RunWorkerCompletedEventArgs args)
{
MessageBox.Show(" ");
});
bw.RunWorkerAsync();
}
Почему вы используете BGW вообще, если ваша операция асинхронна? Основная цель BGW заключается в длительной работе * CPU bound *. Поскольку метод, который вы используете, не будет блокировать поток пользовательского интерфейса, просто выполните его непосредственно из потока пользовательского интерфейса. – Servy
@Servy Да, но я хочу обновлять значения, которые я читаю время от времени. Скажем, 1 с. Поэтому я подумал о том, чтобы поместить его в фонового работника. Является ли это возможным? Или есть другой способ? – sparcopt
Здесь вы не захотите использовать BGW. Это просто не поможет вам это сделать. Вы можете делать все, что хотите, но вы не сказали нам, что вы на самом деле хотите сделать с этим методом асинхронизации, который вы в настоящее время не можете. Коэффициенты, если это возможно, не будут использовать BGW для этого. – Servy