我有一個Windows窗體應用程序,但我在啓動應用程序時遇到了問題。應用程序應該從配置文件中加載保存的信息,然後檢查新項目。當我啓動應用程序時,它會在完成加載保存的項目之前開始查找新項目。因此,用戶會收到不是真正新的新項目的警報,但它們尚未從文件加載。控制應用程序流程的問題
的形式爲:
public class MainForm : Form
{
A a;
public MainForm()
{
InitializeComponent();
a = new A();
a.ItemsFound += new A.NewItemsFoundEventHandler(a_FoundItems);
a.ItemsLoaded += new A.ItemsLoadedEventHandler(a_ItemsLoaded);
a.LoadItems();
}
public void a_FoundItems(object sender, EventArgs e)
{
//Alert user of new items.
}
public void a_ItemsLoaded(object sender, EventArgs e)
{
//Update GUI with items loaded from file.
this.UpdateTheGUI_ThisIsNotARealMethodInMyProgram();
//Then look for new items.
a.CheckForUpdates();
}
}
其他對象:
public class A
{
public A(){}
public void LoadItems()
{
//Load Items from save file...
OnItemsLoaded(this);
}
public void CheckForUpdates()
{
//Check for new items...
//If new items are found, raise ItemsFound event
OnNewItemsFound(this,new EventArgs());
}
public delegate void NewItemsFoundEventHandler(object sender, EventArgs e);
public event NewItemsFoundEventHandler ItemsFound;
protected void OnNewItemsFound(object sender, EventArgs e)
{
if(ItemsFound != null)
{
ItemsFound(sender,e);
}
}
public delegate void ItemsLoadedEventHandler(object sender, EventArgs e);
public event ItemsLoadedEventHandler ItemsLoaded;
protected void OnItemsLoaded(object sender)
{
if(ItemsLoaded != null)
{
ItemsLoaded(sender,new System.EventArgs());
}
}
}
我應該有對象上的新線程調用它的功能,並鎖定所以如果LoadItems運行CheckForUpdates不能叫,還是有更簡單的方法來做到這一點,我錯過了?
編輯:
我發現這個問題。我正在清理項目清單(所以它不會永遠增長),但我只是用新找到的項目填充它。所以每次運行應用程序時,只有列表中的最新項目以及所有較舊的項目被刷新。
笨蛋!
感謝您的幫助,並抱歉蹩腳的問題。
加載處理運行時禁用應用程序輸入? – kenny 2011-06-10 14:50:55