C#gmail notifer代码。重复一遍?

C#gmail notifer代码。重复一遍?,c#,loops,notifications,gmail,C#,Loops,Notifications,Gmail,这段代码检查我是否有来自gmail的邮件,然后通过串行发送m到arduino,如果他们的邮件是 好的,所以我的代码不会编译(错误是代码“CheckMail();”)上需要对象引用),除非我像现在一样将Main更改为非静态,否则它不会编译,因为它们没有静态Main,我被难住了 另外,我如何重复此操作,以便它每分钟检查消息 谢谢 编辑\\ 好的,是的!!!我终于找到了一个可以工作的手机。在你们的人帮助下,它工作了,但它只引用了两次(立即不是60秒间隔)。CMD保持打开状态,它只是在说出未读邮件:2未

这段代码检查我是否有来自gmail的邮件,然后通过串行发送m到arduino,如果他们的邮件是

好的,所以我的代码不会编译(错误是代码“CheckMail();”)上需要对象引用),除非我像现在一样将Main更改为非静态,否则它不会编译,因为它们没有静态Main,我被难住了

另外,我如何重复此操作,以便它每分钟检查消息

谢谢

编辑\\
好的,是的!!!我终于找到了一个可以工作的手机。在你们的人帮助下,它工作了,但它只引用了两次(立即不是60秒间隔)。CMD保持打开状态,它只是在说出未读邮件:2未读邮件:2后停止,然后我的操作超时,未读邮件:0,即使我有未读邮件。即使我将{System.Threading.Thread.Sleep(10000*60);}更改为更长的时间,前两次刷新之间仍然有相同的时间

(此处不包括名称空间、类和使用系统等。)


将支票邮件也设为静态。

将支票邮件也设为静态

while ( true ) {
  try {
    SerialPort port = new SerialPort( "COM9", 9600, Parity.None, 8, StopBits.One );
    port.Open();

    string Unreadz = "0";

      Unreadz = CheckMail();
      Console.WriteLine( "Unread Mails: " + Unreadz );
      if ( !Unreadz.Equals( "0" ) ) port.Write( "m" );
      else port.Write( "n" );

  } catch ( Exception ee ) { Console.WriteLine( ee.Message ); 
  } finally { System.Threading.Thread.Sleep(1000*60); }
}
编辑:带工作循环

应该可以让它每60秒检查一次

而且CheckMail不是静态的(这就是它无法编译的原因)

编辑:带工作循环

应该可以让它每60秒检查一次


CheckMail不是静态的(这就是它不能编译的原因)

对不起,伙计,你忘了语言的基本知识。另外,您可以在主线程上设置一个计时器,并根据设置的计时器计数,在每次计时器运行时调用邮件检查操作。确保为线程同步锁定邮件检查方法,否则会遇到问题。或者确保您的checkmail操作在计时器过期之前完成。

对不起,伙计,您忘记了这里的基本语言。另外,您可以在主线程上设置一个计时器,并根据设置的计时器计数,在每次计时器运行时调用邮件检查操作。确保为线程同步锁定邮件检查方法,否则会遇到问题。或者确保您的checkmail操作在计时器过期之前完成。

确定要解决此问题,我添加了以下代码以替换旧代码:

try {
  SerialPort port = new SerialPort( "COM9", 9600, Parity.None, 8, StopBits.One );
  port.Open();

  string Unreadz = "0";
  while ( true ) {
    Unreadz = CheckMail();
    Console.WriteLine( "Unread Mails: " + Unreadz );
    if ( !Unreadz.Equals( "0" ) ) port.Write( "m" );
    else port.Write( "n" );
  }
} catch ( Exception ee ) { Console.WriteLine( ee.Message ); 
} finally { System.Threading.Thread.Sleep(1000*60); }
然后我添加:“最后{System.Threading.Thread.Sleep(1000*60);}” 致:

为了解决静态问题,我设置了“private string CheckMail(){”“private static string CheckMail(){”


谢谢你的帮助!!!

好的,为了解决这个问题,我添加了以下代码来替换旧代码:

try {
  SerialPort port = new SerialPort( "COM9", 9600, Parity.None, 8, StopBits.One );
  port.Open();

  string Unreadz = "0";
  while ( true ) {
    Unreadz = CheckMail();
    Console.WriteLine( "Unread Mails: " + Unreadz );
    if ( !Unreadz.Equals( "0" ) ) port.Write( "m" );
    else port.Write( "n" );
  }
} catch ( Exception ee ) { Console.WriteLine( ee.Message ); 
} finally { System.Threading.Thread.Sleep(1000*60); }
然后我添加:“最后{System.Threading.Thread.Sleep(1000*60);}” 致:

为了解决静态问题,我设置了“private string CheckMail(){”“private static string CheckMail(){”


谢谢你的帮助!!!

你应该一次问一个问题。你应该一次问一个问题。根据代码,while循环在再次检查之前不会休眠60秒1s,因为你正在休眠的主线程位于finally块中。很好!!!。我做了什么:所以我在旧代码的基础上添加了该代码,然后继续我也要把邮件发到staic!问题回答了吗?是的,我想是的,但我会等到我的作文出来,然后去确认:)你们推荐任何com端口模拟器吗?好的,是的!!!我终于找到了一个工作的com模拟器。它工作了,但只引用了两次。CMD保持打开状态,只是在说“未读邮件:2未读邮件:2 tehn”后停止我获取操作超时,未读邮件:0,即使我有未读邮件。即使我更改{System.Threading.Thread.Sleep(10000*60);}在较长的时间内,它在前两次刷新之间仍然有相同的时间。根据代码,while循环不会休眠60秒1s,它会在再次检查之前完成检查工作,因为你的睡眠主线程位于finally块中。工作!!!。我做了什么:所以我在旧的东西上添加了代码,然后将邮件也更改为staic!那么问题是否得到了回答?是的,我相信是的,但我会等到我准备好我的文件并去确认:)你们推荐任何com端口模拟器吗?好的,是的!!!我终于找到了一个工作的com模拟器。它工作了,但只引用了两次。CMD保持打开状态,只是在说“未读邮件:2未读邮件:2”后停止。我的操作超时了,Unread邮件:0,即使我有未读邮件。即使我更改了{System.Threading.Thread.Sleep(10000*60);}在较长的时间内,前两次刷新之间仍然有相同的时间。谢谢!添加了下面的代码并将checkmail设置为静态:)现在我将模拟一个com端口,看看我得到了什么。谢谢!添加了下面的代码并将checkmail设置为静态:)现在我将模拟一个com端口,看看我得到了什么。
private string CheckMail() {
        string result = "0";

        try {
            var url = @"https://gmail.google.com/gmail/feed/atom";
            var USER = "username";
            var PASS = "password";

            var encoded = TextToBase64( USER + ":" + PASS );

            var myWebRequest = HttpWebRequest.Create( url );
            myWebRequest.Method = "POST";
            myWebRequest.ContentLength = 0;
            myWebRequest.Headers.Add( "Authorization", "Basic " + encoded );

            var response = myWebRequest.GetResponse();
            var stream = response.GetResponseStream();

            XmlReader reader = XmlReader.Create( stream );
            while ( reader.Read() )
                if ( reader.NodeType == XmlNodeType.Element )
                    if ( reader.Name == "fullcount" ) {
                        result = reader.ReadElementContentAsString();
                        return result;
                    }
        } catch ( Exception ee ) { Console.WriteLine( ee.Message ); }
        return result;
    }