Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Consumer
- {
- private readonly Service _service = new Service();
- public ReplaySubject<string> Results = new ReplaySubject<string>();
- public void Trigger()
- {
- Observable.Timer(TimeSpan.FromMilliseconds(100)).Subscribe(async _ => await RunAsync());
- }
- public Task RunAsync()
- {
- return _service.DoAsync();
- }
- }
- public class Service
- {
- public async Task<string> DoAsync()
- {
- return await Task.Run(() => Do());
- }
- private static string Do()
- {
- Thread.Sleep(TimeSpan.FromMilliseconds(200));
- throw new ArgumentException("invalid!");
- return "foobar";
- }
- }
- [Test]
- public async Task Test()
- {
- var sut = new Consumer();
- sut.Trigger();
- var result = await sut.Results.FirstAsync();
- }
- public class Consumer
- {
- private readonly Service _service = new Service();
- public IObservable<string> Trigger()
- {
- var connectible = Observable.Timer(TimeSpan.FromMilliseconds(100))
- .SelectMany(_ => RunAsync())
- .Replay();
- connectible.Connect();
- return connectible;
- }
- public Task<string> RunAsync()
- {
- return _service.DoAsync();
- }
- }
- [Test]
- public async Task Test()
- {
- var sut = new Consumer();
- var results = sut.Trigger();
- var result = await results.FirstAsync();
- }
- Observable.Timer(TimeSpan.FromMilliseconds(100))
- .SelectMany(async _ => await RunAsync())
- .Subscribe();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement