Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Sometimes when working with causalities you want to clear all causalities. One common case where you want to do this is when you use a throttling port (more on that in a later post). Here is a simple test showing how to clear causalities (line 30).
1: [TestClass]
2: public class
3: Given_a_causality_when_unhandled_exception_is_thrown_after_clearing_causalities
4: {
5: private DispatcherQueue dispatcherQueue = new DispatcherQueue();
6: private Exception causalityException = null;
7: private string exceptionMessage = "My unhandled exception";
8:
9: [TestInitialize]
10: public void Setup()
11: {
12: var mre = new ManualResetEvent(false);
13: Port<Exception> exceptionPort = new Port<Exception>();
14: Causality causality = new Causality(
15: string.Format("CausalityForTests: {0}", Guid.NewGuid()),
16: exceptionPort);
17: Arbiter.Activate(dispatcherQueue, exceptionPort.Receive(
18: (e) =>
19: {
20: causalityException = e;
21: mre.Set();
22: }));
23: Dispatcher.AddCausality(causality);
24:
25: Arbiter.Activate(
26: dispatcherQueue,
27: Arbiter.FromHandler(
28: () =>
29: {
30: Dispatcher.ClearCausalities();
31: throw new Exception(exceptionMessage);
32: }));
33: Assert.IsFalse(
34: mre.WaitOne(TimeSpan.FromSeconds(3)),
35: "Causality should not get exception");
36: }
37:
38: [TestMethod]
39: public void Then_exception_is_handled_by_causality()
40: {
41: Assert.IsNull(causalityException);
42: }
43: }