所以我有2類:定時器和KeyHook。C#共享或修改類之間的變量
在Timers類中,我有一個名爲lastInteraction類型爲DateTime的公共變量。
KeyHook類負責監聽鍵盤事件。目前,當按下按鍵時,它會打印到屏幕上。
我希望KeyHook事件用當前的DateTime更新lastInteraction變量,這可能嗎?即使我在定時器類中創建了KeyHook實例,它也沒有幫助。
我怎樣才能實現這樣的事情,我在網上學習,但據我所知,變量不能跨類共享,並且在類之間傳遞值是行不通的。
一些代碼片段:
的Program.cs
static void Main(string[] args)
{
BeatW.Timers timer = new BeatW.Timers();
timer.startTimers();
KeyHook kh = new KeyHook();
Console.ReadKey();
}
KeyHook.cs
public static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
{
int vkCode = Marshal.ReadInt32(lParam);
Console.WriteLine((Keys)vkCode);
}
return CallNextHookEx(_hookID, nCode, wParam, lParam);
}
Timers.cs
class Timers
{
public DateTime lastInteraction;
...
}
您實例化'KeyHook',但回調方法是靜態的。實例如何連接到靜態回調? – dasblinkenlight
相反,hook可以更新它的'static' field/property,你可以從實例方法中讀取它。 – Sinatr
像其他人一樣,我也對你的Keyhook和Timers類是如何連接感到困惑,但我想說你可能希望Keyhook啓動一個事件並讓Timers類訂閱它,以便lastInteraction值可以更新。 –