Cini mi se da resenje sa brojanjem klikova i nije bas najsigurnije ...
Thread mora svaki put (u nekom vremenskom intervalu)
da proverava taj brojac tj. counter u formi i na osnovu njega da detektuje klik
sto moze dovesti dovesti da ga ne detektuje u pravom trenutku (sve zavisi od intervala)
Jedino sto mi sada pada napamet je koriscenje P/Invoke funkcija iz WIN32 API -ija
Code:
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
public int X;
public int Y;
public POINT(int x, int y)
{
this.X = x;
this.Y = y;
}
}
[StructLayout(LayoutKind.Sequential)]
public struct MSG
{
public IntPtr hwnd;
public UInt32 message;
public IntPtr wParam;
public IntPtr lParam;
public UInt32 time;
public POINT pt;
}
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool PeekMessage(out MSG lpMsg, HandleRef hWnd, uint wMsgFilterMin,
uint wMsgFilterMax, uint wRemoveMsg);
[DllImport("user32.dll")]
static extern bool PostThreadMessage(uint idThread, uint Msg, UIntPtr wParam,
IntPtr lParam);
// u tvom Button Click handler-u :
const int BUTTON_CLICK = 2000 ; //poruka koju saljes tvom thread-u
// ID treada kome hoces da saljes poruku
int nIDthread = thread.ManagedThreadId ;
PostThreadMessage(nIDThread,BUTTON_CLICK,IntPtr.Zero,IntPtr.Zero) ;
// u tvojoj Thread proceduri :
MSG msg ;
bool foundMessage = PeekMessage(out msg, IntPtr.Zero, 0, 0, 0); // da li imamo poruku u thread-u
if (foundMessage) // imamo poruku u thread-u
{
if (msg.message == BUTTON_CLICK) // proveravamo o kojoj se poruci radi ...
{
MessageBox.Show("kliknuto dugme na formi") ;
}
}
Nije bas elegantno resenje ... al mozda ti pomogne u ovom slucaju ...