我有一個表單(Form1),並且此表單有一個System.Timers.Timer
對象。我希望使表單無效(基本上這是我的目標,無效(致電Invalidate()
)表單每隔一段時間,其中超時期間每次觸發事件時都會更改)。但是,由於事件處理程序方法是靜態的,我無法訪問我的表單實例。計時器事件處理程序的更新表單
如何將一些對象傳遞給我的事件處理程序?
我有一個表單(Form1),並且此表單有一個System.Timers.Timer
對象。我希望使表單無效(基本上這是我的目標,無效(致電Invalidate()
)表單每隔一段時間,其中超時期間每次觸發事件時都會更改)。但是,由於事件處理程序方法是靜態的,我無法訪問我的表單實例。計時器事件處理程序的更新表單
如何將一些對象傳遞給我的事件處理程序?
這是非常簡單的開始,計時器的WinForms是,這意味着你可以拖放一個計時器到窗體的組件。使用屬性網格來啓用時間並設置計時器間隔。更改屬性網格以顯示事件並雙擊tick事件。將爲您創建一個新的事件處理程序。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
Invalidate();
}
}
我很確定你可以使用MS TPL。從here
Task formManager;
private void FormManagerUpdateUI()
{
// ... UI update work here ...
}
private void StartFormManager()
{
formManager = Task.Factory.StartNew(() => { /* You validation code goes here */ }, TaskCreationOptions.LongRunning);
formManager.ContinueWith((t) => { FormManagerUpdateUI(); }, TaskScheduler.FromCurrentSynchronizationContext());
}
嗨!把你的草案代碼放在這裏。 – 2011-12-30 13:37:12
那麼,只是不要讓它成爲一個靜態的方法。使其成爲窗體的實例方法,以便您可以使用* this *。 Timer類不會介意。 – 2011-12-30 13:44:03