[英]C# program on low ram - backgroundworker not completing DoWork task before ending
我目前正在嘗試在具有i7處理器,512 mb ram並運行w7 Ultimate的VPS上運行用C#(Web請求)編寫的Web機器人。 該程序使用后台工作人員完成主要工作,而不凍結GUI。
但是,每當我嘗試運行該程序時,它都意外結束(顯示我對bgw workcompleted事件的提示),而沒有運行程序的主要部分。
512 MB的ram內存太低而無法運行該程序嗎? 當我嘗試運行它時,它接近最大使用率。 我自己的計算機可以自行運行機器人。 該機器人從三個Richtextbox中獲取用戶輸入,並將它們存儲到字符串數組中,每個數組都有大約3k個條目。
我的工作代碼:
private void mainWorker_DoWork(object sender, DoWorkEventArgs e)
{
var values = (UserInputData)e.Argument;
int submits = 0;
string[] emaillist = values.emails;
string[] addresses = values.addys;
string[] allname = values.names;
int addresscount = 0;
for (int i = 0; i < emaillist.Length; i++)
{
string emailAddress = emaillist[i];
string addy = addresses[addresscount];
string[] addysplit = addy.Split('|');
string street = addysplit[0];
string city = addysplit[1];
string state = addysplit[2].Substring(0, 2);
string zip = addysplit[3];
string name = allname[i];
string[] namesplit = name.Split('|');
string fname = namesplit[0];
string lname = namesplit[1];
mainWorker.ReportProgress(1, emailAddress);
HttpSession submit = new HttpSession();
submit.setUserAgent();
submit.getPage("");
string postDataEmail = "...";
if (submit.html.Contains(".."))
{
submits++;
mainWorker.ReportProgress(90, submits.ToString());
continue;
}
else
{
mainWorker.ReportProgress(50);
Image captchaImg = getImage(captchaUrl);
string postdata = "...";
submit.postPage("...", postdata);
if (submit.html.Contains("..."))
{
submits++;
saveToTextFile("submitted emails", emailAddress);
saveToTextFile("info", emailAddress + ":" + addy + ":" + name);
mainWorker.ReportProgress(90, submits.ToString());
}
else if (submit.html.Contains("Enter code in field"))
{
mainWorker.ReportProgress(80);
decap.reportBadCaptcha();
i--;
addresscount++;
continue;
}
addresscount++;
}
}
}
emaillist數組是通過一個值的richtextbox填充的。 我的reportprogress事件處理程序將一條消息打印到gui,以讓我知道我在執行過程中的位置。 通過for循環運行將始終顯示至少一條消息。
代碼可以正常運行,並且可以在我自己的計算機上正常執行。 在我提到的服務器上運行此命令似乎無法解決問題。
聽起來,我認為這是線程管理問題。 您的i7應該具有12個可用線程,優先級,並且工作站上的負載可能會影響其執行方式。 試用線程池並保持程序運行,直到執行完成
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.