Tag: 进度

使用WebClient()计算要下载的总字节数

变量’totalBytes’始终为-1,因此我无法正确计算/更新进度条,为什么会发生这种情况? private void button1_Click(object sender, EventArgs e) { WebClient client = new WebClient(); client.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed); client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged); client.DownloadFileAsync(new Uri(“http://example.com/test.mp3″), @”E:\Test.mp3”); } private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e) { double bytesIn = double.Parse(e.BytesReceived.ToString()); label1.Text = Convert.ToString(bytesIn); double totalBytes = double.Parse(e.TotalBytesToReceive.ToString()); //stays at -1 label2.Text = Convert.ToString(totalBytes); double percentage = bytesIn / totalBytes […]

HttpWebRequest下载文件和进度条

我在网上搜索但是在使用HttpWebRequest下载文件时找不到任何进展方法。 这门课程是否支持进步? 任何链接,教程,提示将不胜感激。 谢谢。 PS这是代码…… private static Task MakeAsyncRequest(string requestString) { var request = (HttpWebRequest)WebRequest.Create(requestString); Task requestTask = Task.Factory.FromAsync( request.BeginGetResponse, asyncResult => request.EndGetResponse(asyncResult), null); return requestTask.ContinueWith(t => ReadStreamFromResponce(t.Result)); } private static HttpResponse ReadStreamFromResponce(WebResponse result) { var responseobject = new HttpResponse(); var response = (HttpWebResponse)result; responseobject.StatusCode = (short)response.StatusCode; if (!IsSuccess(responseobject.StatusCode)) return responseobject; using (var responseStream = […]

显示从MySQL填充DataSet的进度

我目前正在使用C#和MySQL数据库后端开发应用程序。 我的程序最终可能会从数据库中加载大量数据并添加到DataGridView中显示的数据集中。 我希望能够显示填充DataSet的进度,但不确定如何获取它在数据库中的位置的引用。 下面是我目前的代码。 DatabaseWork dbase = new DatabaseWork(); try { dbase.openConnection(); MySqlDataAdapter myDA = new MySqlDataAdapter(); myDA.SelectCommand = new MySqlCommand(query, dbase.conn); DataTable table = new DataTable(); myDA.Fill(table); BindingSource bSource = new BindingSource(); bSource.DataSource = table; tblDetails.DataSource = bSource; //tblGrid.Columns[0].Visible = false; } catch (MySqlException ex) { dbase.displayError(ex.Message, ex.Number); } finally { dbase.closeConnection(); } 我知道我必须将这部分代码放入像后台工作者这样的线程中,但是如何更改此代码以显示进度。

Windows窗体应用程序C#中的控制台应用程序

我有2个申请。 其中一个是控制台应用程序,另一个是普通的表单应用程序 – 都是用C#编写的。 我想从Windows窗体应用程序打开(从视图中隐藏)控制台应用程序,并能够将命令行发送到控制台应用程序。 我怎样才能做到这一点?

使用HttpWebRequest类在上传和下载时显示百分比的进度

我正在尝试使用C# HttpWebRequest上传和下载(在同一请求中)到服务器,因为数据的大小相当大(考虑网络速度)我想向用户显示工作完成的距离以及如何留下了很多(不是几秒钟,而是百分比)。 我已经阅读了几个尝试实现这一点的例子,但没有一个显示任何进度条。 他们都只是使用async而不是在上传/下载时阻止UI。 而且他们主要关注上传/下载,没有人尝试将它们都包含在同一个请求中。 由于我使用.Net 4作为我的目标框架,我自己无法实现async方法。 如果你要建议任何异步,请使用Begin…方法而不是await关键字! 谢谢。

如何使用C#HttpClient PostAsync显示上传进度

我正在使用Xamarin PCL为Android和iOS创建文件上传应用程序,我已设法实现文件上传和某种进度条,但它无法正常工作。 我在堆栈溢出时看到了一些显示下载进度的答案,但我想通知我的用户有关上传进度的信息并且没有找到任何解决方案。 这是我的代码: public static async Task PostFileAsync (Stream filestream, string filename, int filesize) { var progress = new System.Net.Http.Handlers.ProgressMessageHandler (); //Progress tracking progress.HttpSendProgress += (object sender, System.Net.Http.Handlers.HttpProgressEventArgs e) => { int progressPercentage = (int)(e.BytesTransferred*100/filesize); //Raise an event that is used to update the UI UploadProgressMade(sender, new System.Net.Http.Handlers.HttpProgressEventArgs(progressPercentage, null, e.BytesTransferred, null)); }; using (var […]

上传HTTP进度跟踪

我有WPF应用程序,我写的是将文件发布到社交网络之一。 上传本身工作得很好,但我想提供一些指示,说明我在上传方面有多远。 我尝试了很多方法来做到这一点: 1)HttpWebRequest.GetStream方法: using ( var FS = File.Open( localFilePath, FileMode.Open, FileAccess.Read, FileShare.Read)) { long len = FS.Length; HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url); request.Method = “POST”; request.ProtocolVersion = HttpVersion.Version11; request.ContentType = “multipart/form-data; boundary=–AaB03x”; //predata and postdata is two byte[] arrays, that contains //strings for MIME file upload (defined above and is not important) request.ContentLength […]

Task.Run和UI进度更新

此代码段来自Stephen Cleary的博客,并提供了使用Task.Run时如何报告进度的示例。 我想知道为什么没有更新UI的交叉线程问题,我的意思是为什么不需要调用? private async void button2_Click(object sender, EventArgs e) { var progressHandler = new Progress(value => { label2.Text = value; }); var progress = progressHandler as IProgress; await Task.Run(() => { for (int i = 0; i != 100; ++i) { if (progress != null) progress.Report(“Stage ” + i); Thread.Sleep(100); } }); label2.Text = […]

Backgroundworker不会报告进度

我有一个后台工作程序运行长数据库任务。 我想在任务运行时显示进度条。 不知何故,后台工作人员不会报告任务的进度。 这就是我所拥有的: BackgroundWorker _bgwLoadClients; _bgwLoadClients = new BackgroundWorker(); _bgwLoadClients.WorkerReportsProgress = true; _bgwLoadClients.DoWork += new DoWorkEventHandler(_bgwLoadClients_DoWork); _bgwLoadClients.RunWorkerCompleted += new RunWorkerCompletedEventHandler(_bgwLoadClients_RunWorkerCompleted); _bgwLoadClients.ProgressChanged += new ProgressChangedEventHandler(_bgwLoadClients_ProgressChanged); _bgwLoadClients.RunWorkerAsync(parms); private void _bgwLoadClients_DoWork(object sender, DoWorkEventArgs e) { DataTable dt = getdate(); e.Result = dt; } void _bgwLoadClients_ProgressChanged(object sender, ProgressChangedEventArgs e) { progressBar1.Value = e.ProgressPercentage; } 我在WPF中这样做,但我想它不会有所作为。 提前致谢