using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;namespace background
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
const string PostUrl = "http://hnyzw.com";
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
postdata(sender as BackgroundWorker, e);
} private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
textBox1.Text = e.UserState.ToString();
} private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{ }
void postdata(BackgroundWorker bwork, DoWorkEventArgs e)
{
string re = DoRquestHtml(PostUrl, "POST", "utf-8", "name=test");
if (!string.IsNullOrEmpty(re))
bwork.ReportProgress(0, re+"at:"+DateTime.Now.ToString());
System.Threading.Thread.Sleep(20);
postdata(bwork, e);
}
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
button1.Enabled = false;
} public string DoRquestHtml(string uri, string method, string encodestr, string postparamers)
{
HttpWebResponse result = null;
Stream ReceiveStream = null;
try
{
while (true)
{
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(uri);
wr.Method = method;
wr.Timeout = 10000;
wr.AllowWriteStreamBuffering = false;
//wr.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NETCLR 2.0.50727)";
wr.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10"; Encoding encode = System.Text.Encoding.GetEncoding(encodestr); // System.Windows.Forms.MessageBox.Show(headers["Cookie"].ToString());
if (method == "POST" && postparamers != null)
{
wr.ContentType = "application/x-www-form-urlencoded";
byte[] bytes = encode.GetBytes(postparamers);
wr.ContentLength = bytes.Length;
Stream requestStream = wr.GetRequestStream();
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Close();
} result = (HttpWebResponse)wr.GetResponse();
ReceiveStream = result.GetResponseStream();
StreamReader sr = new StreamReader(ReceiveStream, encode);
string data = sr.ReadToEnd();
sr.Close();
return data; }
}
catch
{ return null;
}
finally
{
if (result != null)
result.Close();
if (ReceiveStream != null)
ReceiveStream.Close(); }
} }
}
程序运行一段时间,大楷一两个钟头,就出现“程序出现问题需要关闭”,是什么原因啊 ,望指点
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;namespace background
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
const string PostUrl = "http://hnyzw.com";
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
postdata(sender as BackgroundWorker, e);
} private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
textBox1.Text = e.UserState.ToString();
} private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{ }
void postdata(BackgroundWorker bwork, DoWorkEventArgs e)
{
string re = DoRquestHtml(PostUrl, "POST", "utf-8", "name=test");
if (!string.IsNullOrEmpty(re))
bwork.ReportProgress(0, re+"at:"+DateTime.Now.ToString());
System.Threading.Thread.Sleep(20);
postdata(bwork, e);
}
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
button1.Enabled = false;
} public string DoRquestHtml(string uri, string method, string encodestr, string postparamers)
{
HttpWebResponse result = null;
Stream ReceiveStream = null;
try
{
while (true)
{
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(uri);
wr.Method = method;
wr.Timeout = 10000;
wr.AllowWriteStreamBuffering = false;
//wr.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NETCLR 2.0.50727)";
wr.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10"; Encoding encode = System.Text.Encoding.GetEncoding(encodestr); // System.Windows.Forms.MessageBox.Show(headers["Cookie"].ToString());
if (method == "POST" && postparamers != null)
{
wr.ContentType = "application/x-www-form-urlencoded";
byte[] bytes = encode.GetBytes(postparamers);
wr.ContentLength = bytes.Length;
Stream requestStream = wr.GetRequestStream();
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Close();
} result = (HttpWebResponse)wr.GetResponse();
ReceiveStream = result.GetResponseStream();
StreamReader sr = new StreamReader(ReceiveStream, encode);
string data = sr.ReadToEnd();
sr.Close();
return data; }
}
catch
{ return null;
}
finally
{
if (result != null)
result.Close();
if (ReceiveStream != null)
ReceiveStream.Close(); }
} }
}
程序运行一段时间,大楷一两个钟头,就出现“程序出现问题需要关闭”,是什么原因啊 ,望指点
void postdata(BackgroundWorker bwork, DoWorkEventArgs e)
{
string re = DoRquestHtml(PostUrl, "POST", "utf-8", "name=test");
if (!string.IsNullOrEmpty(re))
bwork.ReportProgress(0, re+"at:"+DateTime.Now.ToString());
System.Threading.Thread.Sleep(20);
postdata(bwork, e);
}在postdata里面无条件调用postdata自己,这个看上去会造成死循环。是否少了条件或者少了大括号。