将程序放入循环中

本文关键字:循环 程序 | 更新日期: 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