将程序放入循环中
本文关键字:循环 程序 | 更新日期: 2023-09-27 18:17:19
刚刚完成一个程序,这个网站上一些非常有帮助的人给了我建议。该程序从列表框中获取用户名,使用webBrowser控件输入正确的URL,然后发布消息。现在我想把它设为自动驾驶让我们用编程的方式浏览一下名单。我可以在哪里以及如何添加循环?
private bool WaitingForData;
public void master()
{
listBox();
Application.DoEvents();
GetData();
Application.DoEvents();
}
public void listBox()//Handles getting names from ListBox
{
//load names to listbox
}
private void GetData()
{
webBrowser1.Navigate(inputURLID);
WaitingForData = true;
}
private void SendData()
{
webBrowser1.Document.GetElementById("subject").SetAttribute("value", textBox2_Subject.Text);//To (username)
webBrowser1.Document.GetElementById("message").SetAttribute("value", richTextBox1.Text);//Subject
webBrowser1.Document.GetElementById("Submit").InvokeMember("click");//Message
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (WaitingForData) SendData();
WaitingForData = false;
}
假设您希望自动处理用户名列表,有两种基本的可能性。
1)你希望启动一个UI,让别人手动添加逗号或换行符分隔的名称列表,然后按下go按钮2)您希望从数据库/web服务或定期替换的文本文件中获得名称列表,并使程序在有新信息时自动执行。
让我们依次处理
1)您需要从列表框中检索数据并将其拆分为用户名列表。如果您使用逗号分隔值(例如"Paul, Steve, Michael"
),您可以使用
var names = myListBox.Text.Split(',');
然后循环遍历它们,使用类似于
的代码进行工作:
foreach(var name in names)
{
doWork(name);
}
在选项2中,你需要一个不同风格的程序,要么是一个windows服务,要么是一个带有任务调度程序的命令行应用程序。
无论哪种情况,我都不确定你的程序的当前结构是否适合批处理。
最后一点,如果你想做的是通过基于浏览器的客户端(看起来就是这样)自动发送电子邮件,那么首先这是一个非常糟糕的主意,特别是使用web浏览器控件来做这件事,其次,请确保你有合法的权利这样做,因为像这样的垃圾邮件网站如果不检查是非常有害的。
如果你想在一个"循环"中运行整个程序,最好的方法是通过Windows任务调度程序。只要设置一个指向程序的任务,并将其设置为任意频率运行即可。
http://msdn.microsoft.com/en-us/library/windows/desktop/aa383614%28v=vs.85%29.aspx