У меня есть класс (который я не контролирую), который имеет длительную синхронную функцию, которая возвращает T. Я хочу сделать это асинхронным, изменив его на IObservable, который ничего не будет, пока функция выполняется, а затем OnNextT) -> OnCompleted ().Как проще всего это реализовать?
class Foo
{
bool TakesAWhile();
}
class FooWrapper
{
Foo foo;
IObservable<bool> TakesAWhile()
{
// What goes here?
}
}
Следующее работает, но я подозреваю, что мне чего-то не хватает.
public IObservable<bool> TakesAWhile()
{
var s = new Subject<bool>();
var worker = new BackgroundWorker();
worker.DoWork += (sender, e) =>
{
s.OnNext(foo.TakesAWhile());
s.OnCompleted();
};
worker.RunWorkerAsync();
return s.AsObservable<bool>();
}