Создать наблюдаемую оболочку для небезопасного класса

У меня есть класс,

public class Test
{
  public int Calc();
}

, который требует, чтобы все вызовы Calc выполнялись в том же потоке, что и тот, в котором был создан Test. Мне нужно создать Test один раз ( дорогостоящая операция) и вызовите Calc несколько раз.

Я бы хотел иметь оболочку, которая позволила бы мне вызывать Calc асинхронно:

public class TestWrapper
{
  private Test _test;
  public IObservable<int> Calc();
}

Один из способов сделать это - создать BackgroundWorker или Thread и использовать его как гарантию того, что все операции над Test выполняются в одном потоке. Для простоты мы можем предположить, что все вызовы Calc () будут выполняться последовательно, поэтому не нужно беспокоиться об очередях.

Есть ли более элегантный способ RX сделать это?

8
задан Sergey Aldoukhov 15 August 2011 в 22:23
поделиться