public void IsFirstInstance()
        {
            var instance1 = FirstInstance;

            Assert.IsTrue(instance1.IsFirstInstance);

            using (var instance2 = new SingleApplicationInstance <TestApplication>("test")) {
                Assert.IsFalse(instance2.IsFirstInstance);
            }
        }
        public void Invoke()
        {
            var instance1 = FirstInstance;

            Assert.IsTrue(instance1.IsFirstInstance);

            instance1.FirstInstance = new TestApplication();
            Assert.IsNotNull(instance1.FirstInstance);
            Assert.AreEqual(0, instance1.FirstInstance.InvokeCounter);
            instance1.FirstInstance.Invoke();
            Assert.AreEqual(1, instance1.FirstInstance.InvokeCounter);

            using (var instance2 = new SingleApplicationInstance <TestApplication>("test")) {
                Assert.IsFalse(instance2.IsFirstInstance);

                Assert.IsNotNull(instance2.FirstInstance);
                Assert.AreEqual(1, instance2.FirstInstance.InvokeCounter);
                instance2.FirstInstance.Invoke();
                Assert.AreEqual(2, instance2.FirstInstance.InvokeCounter);
            }
        }
        public void Dispose()
        {
            FirstInstance.Dispose();
            FirstInstance = null;

            try {
                var mutex = Mutex.OpenExisting("test");
                Assert.Fail();
            } catch (WaitHandleCannotBeOpenedException) {
            }
            Assert.IsNull(ChannelServices.GetChannel("ipc"));

            var appData = Environment.GetFolderPath(
                Environment.SpecialFolder.LocalApplicationData
                );
            var lockDirectory = Path.Combine(appData, "SingleApplicationInstance");
            var lockFile      = Path.Combine(lockDirectory, "test");

            //Assert.IsFalse(File.Exists(lockFile));

            FirstInstance = new SingleApplicationInstance <TestApplication>("test");
            Assert.IsTrue(FirstInstance.IsFirstInstance);
            //Assert.IsTrue(File.Exists(lockFile));
        }
 public void SetUp()
 {
     FirstInstance = new SingleApplicationInstance <TestApplication>("test");
 }