-1
private int numberofallmessages = 0;
private int countMsg = 0;
private List<string> seenids = new List<string>();
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
OpenPop.Pop3.Pop3Client PopClient = new OpenPop.Pop3.Pop3Client();
PopClient.Connect("mail", 110, false);
PopClient.Authenticate("me", "mo",
OpenPop.Pop3.AuthenticationMethod.UsernameAndPassword);
List<string> uids = PopClient.GetMessageUids();
List<string> seenUids = new List<string>();
int messageCount = 30;
numberofallmessages = messageCount;
allMessages = new List<OpenPop.Mime.Message>(messageCount);
for (int i = messageCount - 1; i > -1; i--)
{
if (backgroundWorker1.CancellationPending == true)
{
e.Cancel = true;
return;
}
string currentUidOnServer = uids[i];
if (!seenUids.Contains(currentUidOnServer))
{
allMessages.Add(PopClient.GetMessage(i));
SaveFullMessage(PopClient.GetMessage(i), i);
w = new StreamWriter(emailsIDSFile, true);
w.WriteLine((i + 1) + " = " + currentUidOnServer);
w.Close();
int nProgress = (messageCount - i + 1) * 100/messageCount;
backgroundWorker1.ReportProgress(nProgress, PopClient.GetMessageCount().ToString() + "/" + i);
}
}
PopClient.Disconnect();
}
唯一的例外是上線:如何修復超出索引異常?
allMessages.Add(PopClient.GetMessage(i));
當異常現在發生變量 'i' 是0 變量allMessages名單是29 和可變messageCount是30
的messageNumber參數的值不能爲零或更小。有效messageNumber範圍爲[1,messageCount]
那麼異常消息看起來相當清楚 - 它看起來像'Pop3Client.GetMessage'採用基於1的值,而不是基於0的值。 (它也在文檔中 - http://hpop.sourceforge.net/documentation/OpenPop~OpenPop.Pop3.Pop3Client.GetMessage.html) –