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