コード例 #1
0
        private async void UserSelect(object obj)
        {
            var collection = obj as IList;

            if (collection == null)
            {
                return;
            }
            var fileArray = FileTookit.FileDialogSelect();
            var taskList  = new List <Task>();

            foreach (var t in collection)
            {
                //TODO : 1 先Begin,让Service Push Call目标客户端开启文件传输服务
                //TODO : 2 再直接建立连接进行局域网测试,若测试失败,则使用服务端进行Try测试,若测试均失败,则return 退出传输,最好能报个错误
                ClientToken targetToken = t as ClientToken;
                targetToken.TaskId = $"{targetToken.ServicePort}+{Guid.NewGuid()}";
                var task = new Task(() =>
                {
                    if (targetToken.OnlineState == OnlineStateEnum.Online)
                    {
                        if (!BeginRemoteUpdateService(targetToken))
                        {
                            return;
                        }
                        Console.WriteLine("开始测试LAN连接!");
                        bool lanConnectResult = LanFileUpdateTest(targetToken);

                        if (!lanConnectResult)
                        {
                            Console.WriteLine("局域网连接测试失败了!!");
                        }

                        RunFileTransfer(lanConnectResult, fileArray, targetToken.ServicePort, ClientProxy, targetToken);

                        if (!EndRemoteUpdateService(targetToken))
                        {
                            throw new Exception("关闭远程服务出错");
                        }
                    }
                    else
                    {
                        Console.WriteLine($"在想什么呢?没看到{targetToken.NickName}不在线吗?");
                    }
                });
                taskList.Add(task);
                task.Start();
            }
            await Task.WhenAll(taskList.ToArray());
        }
コード例 #2
0
        public bool ClearTemperary()
        {
            var tmpDirectory = $"{System.AppDomain.CurrentDomain.BaseDirectory}\\{TEMPORARYDIRECTORY}";
            var tmp          = new DirectoryInfo(tmpDirectory);

            if (!tmp.Exists)
            {
                tmp.Create();
            }
            else
            {
                //clear all the  files of directory
                FileTookit.DeleteFile(tmp.FullName);
            }
            return(true);
        }
コード例 #3
0
        public void FileWait(string path)
        {
#if DEBUG
            Console.WriteLine("Waiting file release");
#endif
            bool usingWait = true;
            int  times     = 0;
            while (usingWait && times < 10)//最多等待10秒
            {
                usingWait = FileTookit.CheckFileIsNotUsing(path);
                if (usingWait)
                {
                    break;
                }
                Thread.Sleep(1000);
                times++;
            }
            if (!usingWait)//仍然被占用
            {
                throw new NotSupportedException($"{path} 文件被占用");
            }
        }