Advertisement
Guest User

Untitled

a guest
Apr 19th, 2014
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. public class Consumer
  2. {
  3. private readonly Service _service = new Service();
  4.  
  5. public ReplaySubject<string> Results = new ReplaySubject<string>();
  6.  
  7. public void Trigger()
  8. {
  9. Observable.Timer(TimeSpan.FromMilliseconds(100)).Subscribe(async _ => await RunAsync());
  10. }
  11.  
  12. public Task RunAsync()
  13. {
  14. return _service.DoAsync();
  15. }
  16. }
  17.  
  18. public class Service
  19. {
  20. public async Task<string> DoAsync()
  21. {
  22. return await Task.Run(() => Do());
  23. }
  24.  
  25. private static string Do()
  26. {
  27. Thread.Sleep(TimeSpan.FromMilliseconds(200));
  28. throw new ArgumentException("invalid!");
  29. return "foobar";
  30. }
  31. }
  32.  
  33. [Test]
  34. public async Task Test()
  35. {
  36. var sut = new Consumer();
  37. sut.Trigger();
  38. var result = await sut.Results.FirstAsync();
  39. }
  40.  
  41. public class Consumer
  42. {
  43. private readonly Service _service = new Service();
  44.  
  45. public IObservable<string> Trigger()
  46. {
  47. var connectible = Observable.Timer(TimeSpan.FromMilliseconds(100))
  48. .SelectMany(_ => RunAsync())
  49. .Replay();
  50. connectible.Connect();
  51. return connectible;
  52. }
  53.  
  54. public Task<string> RunAsync()
  55. {
  56. return _service.DoAsync();
  57. }
  58. }
  59.  
  60. [Test]
  61. public async Task Test()
  62. {
  63. var sut = new Consumer();
  64. var results = sut.Trigger();
  65. var result = await results.FirstAsync();
  66. }
  67.  
  68. Observable.Timer(TimeSpan.FromMilliseconds(100))
  69. .SelectMany(async _ => await RunAsync())
  70. .Subscribe();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement