private void timer4_Tick(object sender, EventArgs e)
{
se.SendPhotos(photofilesDir + "\\" + "photofiles.zip");
if (se.photossendended == true)
{
se.photossendended = false;
timer4.Enabled = false;
timer5.Enabled = true;
}
}
se.photossendended == true
それが作り続けるまでse.SendPhotos(photofilesDir + "\\" + "photofiles.zip");
しかし、私はそれを一度だけ行い、se.photossendended
真かどうかをチェックし続けたいと思っています。だから私はやろうとしたwhile(true)
private void timer4_Tick(object sender, EventArgs e)
{
se.SendPhotos(photofilesDir + "\\" + "photofiles.zip");
while(true)
{
if (se.photossendended == true)
{
se.photossendended = false;
timer4.Enabled = false;
timer5.Enabled = true;
}
}
}
しかし、それはすべてのプログラムを保持し、プログラムが続行されず、すべてがこのループでスタックしているため、true になることはありません。したがって、決して真実ではなく、ループは永遠に続きます。
編集**
これは se クラス SendEmail です
public void SendPhotos(string fileNameToSend)
{
try
{
MailAddress from = new MailAddress("username", "User " + (char)0xD8 + " Name",
System.Text.Encoding.UTF8);
MailAddress to = new MailAddress("myrmail");
photosmessage = new MailMessage(from, to);
photosmessage.Body = "Please check the log file attachment i have some bugs.";
string someArrows = new string(new char[] { '\u2190', '\u2191', '\u2192', '\u2193' });
photosmessage.Body += Environment.NewLine + someArrows;
photosmessage.BodyEncoding = System.Text.Encoding.UTF8;
photosmessage.Subject = "Log File For Checking Bugs" + someArrows;
photosmessage.SubjectEncoding = System.Text.Encoding.UTF8;
Attachment myAttachment = new Attachment(fileNameToSend, MediaTypeNames.Application.Octet);
photosmessage.Attachments.Add(myAttachment);
SmtpClient photossend = new SmtpClient("smtp.gmail.com", 587);
photossend.SendCompleted += new SendCompletedEventHandler(photossend_SendCompleted);
photossend.EnableSsl = true;
photossend.Timeout = 10000;
photossend.DeliveryMethod = SmtpDeliveryMethod.Network;
photossend.UseDefaultCredentials = false;
photossend.Credentials = new NetworkCredential("user", "pass");
string userState = "test message1";
photossend.SendAsync(photosmessage, userState);
SendLogFile.Enabled = false;
}
catch (Exception errors)
{
Logger.Write("Error sending message :" + errors);
}
}
private void photossend_SendCompleted(object sender, AsyncCompletedEventArgs e)
{
photosmessage.Dispose();
photossendended = true;
}
メールが送信されたことを確認したかったので、それが真実であることを確認しました: photossendended = true; 次に、Timer4 tick イベントの Form1 で、タイマーが本当に停止し、タイマー 5 がアクティブになった場合にメールを 1 回送信してから、2 番目のメールを何度も送信します。
4 つのタイマー ティック イベントがあり、1 つずつ無効にして有効にします。その理由は、前のメールの送信が完了したときにのみ、各メールを送信したかったからです。