Example #1
0
 static void Main(string[] args)
 {
     var sc = new ServiceTest();
     sc.ServiceTest_WCFAndCalculationAndWatcherAndCommand(60*60*1000);
     Console.WriteLine("Press [ENTER] for exit");
     Console.ReadLine();
 }
        public void WebServiceTest_Connect()
        {
            var serverThread = new Thread(new ThreadStart(() =>
            {
                var st = new ServiceTest();
                st.ServiceTest_WCFAndCalculationAndWatcherAndCommand(10*60*1000);
            }));
            serverThread.Start();
            try
            {
                var evnt = new ServiceSubscriber();
                evnt.IsCalculationActiveEvent += (s, e) =>
                {
                    Debug.WriteLine(string.Format("[WebServiceTest] IsActive changed to '{0}' by user '{1}'", e.IsActive, e.UserName));
                };
                evnt.LogChangedEvent += (s, e) =>
                {
                    Debug.WriteLine(string.Format("[WebServiceTest] Log changed (id:'{0}')", e != null && e.Id != null ? e.Id : "null"));
                };
                evnt.QueueChangedEvent += (s, e) =>
                {
                    Debug.WriteLine(string.Format("[WebServiceTest] Queue changed (file:'{0}', action:'{1}')", e.Element.File, e.Action));
                };
                InstanceContext evntContext = new InstanceContext(evnt as IControlServiceCallback);

                Thread.Sleep(3000);
                var clientId = Guid.NewGuid();
                using (var proxy = new ControlServiceClient(evntContext))
                {
                    proxy.ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;

                    Debug.WriteLine("[WebServiceTest] subscribe events");
                    proxy.SubscribeEvents(clientId);

                    var queueElements = proxy.GetQueue();
                    Assert.AreEqual(3, queueElements.Length);

                    string folderName = @"D:\test3";
                    for (int i = 3; i < 5; i++)
                        System.IO.File.WriteAllText(string.Format(@"{0}\test.d{1}", folderName, i.ToString("00")), "test");

                    Thread.Sleep(3000);

                    queueElements = proxy.GetQueue();
                    Assert.AreEqual(5, queueElements.Length);

                    Debug.WriteLine("[WebServiceTest] SetIsCalculationActive(true)");
                    proxy.SetIsCalculationActive(true);
                    Thread.Sleep(1000);

                    while ((queueElements = proxy.GetQueue()).Length > 0
                        && (proxy.GetIsCalculationActive()))
                        Thread.Sleep(1000);

                    Debug.WriteLine("[WebServiceTest] SetIsCalculationActive(false)");
                    proxy.SetIsCalculationActive(false);
                    Thread.Sleep(1000);

                    Debug.WriteLine("[WebServiceTest] unsubscribe events");
                    proxy.UnsubscribeEvents(clientId);
                }
            }
            finally
            {
                serverThread.Abort();
            }
        }