求c#版 Ftp异步上传下载,及时更新进度的Demo,可行的思路也可以

好好做事 2015-12-09 07:22:20
BeginInvoke EndInvoke能实现异步吗?实现即时更新进度呢?
...全文
317 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
白衣如花 2015-12-10
  • 打赏
  • 举报
回复
        private delegate void UpLoad(List<string> files);
        private delegate void CompleteSingleFile();
        CompleteSingleFile CompleteSingle = null;

        private void Form1_Load(object sender, EventArgs e)
        {
            List<string> files = new List<string>();
            for (int i = 1; i <= 10; i++)
                files.Add(i.ToString());
            this.progressBar1.Maximum = files.Count;
            this.progressBar1.Value = 0;
            CompleteSingle = new CompleteSingleFile(this.CompleteSingleFileMethod);
            (new UpLoad(UpLoadMethod)).BeginInvoke(files, new AsyncCallback(CompleteUpLoad) , this);
        }
        private void UpLoadMethod(List<string> files)
        {
            foreach (var file in files)
            {
                // 此处上传
                Thread.Sleep(1000);
                if (CompleteSingle != null)
                    CompleteSingle();
            }
        }
        private void CompleteSingleFileMethod()
        {
            if (this.progressBar1.Value < this.progressBar1.Maximum)
            {
                this.Invoke(new Action(delegate
                {
                    this.progressBar1.Value++;
                }));
                
            }
        }
        private void CompleteUpLoad(IAsyncResult result)
        {
            this.progressBar1.Value = this.progressBar1.Maximum;
            MessageBox.Show("上传完毕");
        }
衣舞晨风 2015-12-10
  • 打赏
  • 举报
回复
引用 2 楼 xq624205984 的回复:
楼上的兄弟,你给的链接都失效了
现在可以了 那个csdn的博客崩了
白衣如花 2015-12-10
  • 打赏
  • 举报
回复
引用 6 楼 xq624205984 的回复:
确实问的是异步,上传下载已经实现,但是会卡主线程,所以想异步实现。楼上的兄弟,有没得这方面的例子? 昨天用了下BeginInvoke,好像只有结束时的回调,没有进度回传,所以想参考下
进度条我不一般是循环。。。懒得算 要回调一样是用委托,每次ftp下载或上传成功一个文件就回调一次,手动设置进度
好好做事 2015-12-10
  • 打赏
  • 举报
回复
确实问的是异步,上传下载已经实现,但是会卡主线程,所以想异步实现。楼上的兄弟,有没得这方面的例子? 昨天用了下BeginInvoke,好像只有结束时的回调,没有进度回传,所以想参考下
白衣如花 2015-12-10
  • 打赏
  • 举报
回复
异步和Ftp没关系吧,你定义一个委托,在委托的begininvoke里面上传下载就实现异步了啊
xdashewan 2015-12-10
  • 打赏
  • 举报
回复
如果你想问的是异步,那么就去查c#的线程。
好好做事 2015-12-10
  • 打赏
  • 举报
回复
楼上的兄弟,你给的链接都失效了

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧