У меня есть asked a question о том, как узнать, когда строка кода другой другой библиотеки библиотеки изменяется в моем коде. Я могу получить доступ к самой строке в любое время. но не может реализовать INotifyPropertyChanged
, так как это не мой код.Как заменить (async) BackgroundWorker с (async) Task.Run (из TPL)?
Мне предложили использовать BackgroundWorker
, и это решение действительно работает для меня! , но я старался убедиться, что это лучшее решение, и получил совет, чтобы посмотреть на TPL. Дальнейшие исследования показали, что Task.Run of TPL может быть лучшим решением, как упоминалось здесь, например: Task parallel library replacement for BackgroundWorker?, но я не мог реализовать его в коде.
Я пытаюсь заменить этот код на Task.Run (Спасибо @ a.azemia)
BackgroundWorker bw = new BackgroundWorker();
bw.DoWork += (s, e) =>
{
while (true)
{
if (!fc.SecondString.Equals(AnotherPartyLibrary.firstString))
{
fc.SecondString = AnotherPartyLibrary.firstString;
}
Thread.Sleep(1000);
}
};
bw.RunWorkerAsync();
я не мог найти ни одного примера, который подходит моему сценарию и пытался узнать из других примеров с не успех. Мне нужна петля while
внутри задачи, и ей нужно запустить asynchronously
, как и BackgroundWorker
. не смог найти какой-либо пример с циклом while
в задаче, поэтому я не уверен, как это можно сделать.
Я также читал, что выражения Лямбда используют больше ресурсов, и это было показано в каком-то тесте, которое я видел, поэтому мне хотелось бы избежать Лямбды, если это возможно.
Спасибо за помощь!
Что касается вниз голосов, что случилось с моим вопросом? Я просто хотел бы упомянуть, что я провел много часов (!!), пытаясь заставить его работать. Я не прошу сэкономить свое время, но потому, что я действительно пробовал все, что мог, и я действительно застрял. – Ray
Для вашего простого сценария я не вижу никакой пользы в изменении. Это можно было бы сделать только с помощью таймера ... –
Избегание выражения lamda из-за некоторых накладных расходов на ресурсы - это улучшение микропроизводительности. Игнорируйте его и просто используйте lamdas – Sievajet