|
感谢坛主所提供的类,让开发时免除多余的操作。但是最近在写多线程请求时,无一例外都出现这以下这个错误
错误如下[td]2015-03-15 00:59:36 59:13 liouxianen1----694748 167号线程开始运行,59:35 Error未将对象引用设置到对象的实例。 -- 在 DotNet4.Utilities.HttpHelper.GetData(HttpItem item, HttpResult result) 位置 D:\学习\C#\我写的小代码\12-11房产助手\1\WindowsFormsApplication1\HttpHelper.cs:行号 140 在 DotNet4.Utilities.HttpHelper.GetHtml(HttpItem item) 位置 D:\学习\C#\我写的小代码\12-11房产助手\1\WindowsFormsApplication1\HttpHelper.cs:行号 116在 WindowsFormsApplication1.Form1.LoadWeb(List`1& LLog, HttpHelper& helper, String& html, String& http_cookie, String Var_UseAgent, String UserName, String UserPass, Boolean& boolerror, Int32 fori, String proxy) 位置 D:\学习\C#\我写的小代码\12-11房产助手\1\WindowsFormsApplication1\Form1.cs:行号 376在 WindowsFormsApplication1.Form1.OpenThread(List`1& LLog, String UserName, String UserPass) 位置 D:\学习\C#\我写的小代码\12-11房产助手\1\WindowsFormsApplication1\Form1.cs:行号 515,59:35 liouxianen1----694748 167号线程已运行完毕 | | | | 2015-03-15 00:59:36 59:13 hnhk.qn----460031 166号线程开始运行,59:35 Error未将对象引用设置到对象的实例。 -- 在 DotNet4.Utilities.HttpHelper.GetData(HttpItem item, HttpResult result) 位置 D:\学习\C#\我写的小代码\12-11房产助手\1\WindowsFormsApplication1\HttpHelper.cs:行号 140 在 DotNet4.Utilities.HttpHelper.GetHtml(HttpItem item) 位置 D:\学习\C#\我写的小代码\12-11房产助手\1\WindowsFormsApplication1\HttpHelper.cs:行号 116 在 WindowsFormsApplication1.Form1.LoadWeb(List`1& LLog, HttpHelper& helper, String& html, String& http_cookie, String Var_UseAgent, String UserName, String UserPass, Boolean& boolerror, Int32 fori, String proxy) 位置 D:\学习\C#\我写的小代码\12-11房产助手\1\WindowsFormsApplication1\Form1.cs:行号 376 在 WindowsFormsApplication1.Form1.OpenThread(List`1& LLog, String UserName, String UserPass) 位置 D:\学习\C#\我写的小代码\12-11房产助手\1\WindowsFormsApplication1\Form1.cs:行号 515,59:35 hnhk.qn----460031 166号线程已运行完毕 | |
| [/td] |
事实上我已经将其初始化了,而且在上面的错误是在未知情况下出现的。我想过几种解决的办法。就是当他为空时再重新创建。但还是失败。所以请坛主出个小手,看怎么解决这个问题。。。。
多线程当中的代码如下。
[C#] 纯文本查看 复制代码 /*
* LoadWeb(日志,控件,返回,COOKIE,头部,用户,密码,成功与否,是否递归了一次)
登录模块
*/
public void LoadWeb(ref List<string> LLog, ref HttpHelper helper, ref string html, ref string http_cookie, string Var_UseAgent, string UserName, string UserPass,ref Boolean boolerror,int fori, string proxy)
{
HttpHelper helpera = new HttpHelper(); //创建连接对像
HttpResult result = null; //初始化值
HttpItem item = new HttpItem(); //默认程序
string str_err = string.Empty;
string url = string.Empty;
url = string.Format("http://xxxxx.com/);
item = new HttpItem()
{
URL = url,
Referer = "http://www.xxxxx.cn/",//来源URL 可选项
Timeout = 10000,
Cookie = http_cookie,
Allowautoredirect = true,//是否根据301跳转 可选项
UserAgent = Var_UseAgent,
Accept = "*/*",// 可选项有默认值
Method = "GET",
};
item.Header.Add("x-forwarded-for", proxy);
result = helpera.GetHtml(item);
html = result.Html;
http_cookie = tool.CookieChong(http_cookie, result.Cookie); //+ " Province=028; City=08275; ";
if (html.Contains("\"Message\":\""))
{
boolerror = true;
if (html.IndexOf("\"Message\":\"") > 0)
{
str_err = html.Substring(html.IndexOf("\"Message\":\"") + "\"Message\":\"".Length);
str_err = str_err.Substring(0, str_err.IndexOf("\""));
}
LLog.Add("帐号登录失败.失败原因:" + str_err);
ToFile(Application.StartupPath + "\\log\\登录失败.txt", UserName + TBSplit + UserPass);
}
else if( html.Contains("\"Message\":null") )//登录成功
{
LLog.Add("帐号登录成功");
ToFile(Application.StartupPath + "\\log\\登录成功.txt", UserName + TBSplit + UserPass);
}
else
{
boolerror = true;
LLog.Add("帐号未知错误");
//LoadWeb(ref LLog, ref helper, ref html, ref http_cookie, Var_UseAgent, UserName, UserPass, ref boolerror, 2);
//if (fori == 0)
//{
// LLog.Add("帐号未知错误递归一次查看是否验证码问题");
//}
//else
//{
ToFile(Application.StartupPath + "\\log\\未知错误.txt", UserName + TBSplit + UserPass);
//}
}
helper = helpera;
}
|
|