public static void RunAfter(int millisecondTimeout,
System.Threading.ThreadStart method)
{
System.Threading.Thread t = new System.Threading.Thread(() =>
{
System.Threading.Thread.Sleep(millisecondTimeout);
method();
});
t.Start();
}
Вы могли бы тогда сделать
RunAfter(3000, () => z = 5;);