C# 如何向流中添加进度条并返回响应
我正在尝试将进度条添加到我的uploadbutton。 我正在向服务器发送一个xmldocument文件。 我已经看过seaveral ansers,但我无法找到一个正确的解决方法来发送我的文件。这是我当前的代码。我曾经尝试过一个backgroundworker,但是我得到一个例外,我用来获取响应的线程不是正确的线程,所以我想知道是否有人雇佣了一个简单的方法来处理下面的代码C# 如何向流中添加进度条并返回响应,c#,file-upload,progress-bar,C#,File Upload,Progress Bar,我正在尝试将进度条添加到我的uploadbutton。 我正在向服务器发送一个xmldocument文件。 我已经看过seaveral ansers,但我无法找到一个正确的解决方法来发送我的文件。这是我当前的代码。我曾经尝试过一个backgroundworker,但是我得到一个例外,我用来获取响应的线程不是正确的线程,所以我想知道是否有人雇佣了一个简单的方法来处理下面的代码 private void btnHttpPost_Click(object sender, EventArgs e)
private void btnHttpPost_Click(object sender, EventArgs e)
{
WebRequest request;
if (string.IsNullOrEmpty(txtPassword.Text) && string.IsNullOrEmpty(txtUsername.Text))
request = WebRequest.Create(txtHttpPost.Text.Trim());
else
request = WebRequest.Create(txtHttpPost.Text.Trim() + "&" + txtUsername.Text.Trim() + "&" + txtPassword.Text.Trim());
request.Method = "POST";
byte[] bytes = System.Text.Encoding.ASCII.GetBytes(_original.InnerXml);
request.ContentType = "binary/octet-stream";
request.ContentLength = bytes.Length;
Stream dataStream = request.GetRequestStream();;
dataStream.Write(bytes, 0, bytes.Length);
dataStream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
txtResponse.Text = ((HttpWebResponse)response).StatusDescription;
dataStream = response.GetResponseStream();
if (dataStream != null)
{
var reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
txtResponse.Text += responseFromServer;
// Clean up the streams.
reader.Close();
}
if (dataStream != null) dataStream.Close();
response.Close();
}
有人能帮我吗?
提前感谢您将数据作为一个块发送:
dataStream.Write(bytes, 0, bytes.Length);
您应该以几百字节的小块发送数据,并在每个块之后更新进度条
伪代码:
int dataavail = bytes.Length;
int chunkSize = 512; // 1024, 2048, 4096 are good too
while( dataavail > 0 )
{
dataStream.Write(bytes, bytes.Length - dataavail , Math.Min(chunkSize, dataavail));
dataavail -= chunkSize;
// TODO: Update Progress Indicator here
}