コード例 #1
0
        public async Task  TestManyWaiters()
        {
            var responseDispatcher = new ResponseDispatcher();
            var tasks  = new List <Task <string> >();
            var item_r = responseDispatcher.RegisterAwaiter("r");
            var item_e = responseDispatcher.RegisterAwaiter("e");
            var item_S = responseDispatcher.RegisterAwaiter("S");

            tasks.Add(responseDispatcher.WaitForResultAsync(item_r, -1));
            tasks.Add(responseDispatcher.WaitForResultAsync(item_e, -1));
            tasks.Add(responseDispatcher.WaitForResultAsync(item_S, -1));
            await Task.Delay(10);

            responseDispatcher.FeedMessage("S SParam");
            responseDispatcher.FeedMessage("e eParam");
            responseDispatcher.FeedMessage("r rParam");


            Assert.AreEqual("rParam", tasks[0].Result);
            Assert.AreEqual("eParam", tasks[1].Result);
            Assert.AreEqual("SParam", tasks[2].Result);
        }
コード例 #2
0
        public async Task TestAsyncVersion(string prefix, string message)
        {
            var feedLine = prefix + " " + message;

            var responseDispatcher = new ResponseDispatcher();
            var item        = responseDispatcher.RegisterAwaiter(prefix);
            var taskAwaiter = responseDispatcher.WaitForResultAsync(item).GetAwaiter();

            taskAwaiter.OnCompleted(() =>
            {
                Assert.AreEqual(taskAwaiter.GetResult(), message);
            });
            await Task.Delay(100);

            responseDispatcher.FeedMessage(feedLine);
        }