Safe method invoker in c#

Today I was reading an article on codeproject by Mark Clifton about using a safe invoker for a method.

While the idea was quite good, I think the implementation was a bit bloated, so I posted a comment with my own implementation.

This was the implementation I posted:

class SafeMethodInvoker

{ public delegate void ExcDlgt(Exception e);public delegate void voidDlgt();

public delegate bool boolDlgt();

public static void Run(boolDlgt del, int TimeOutMs,

ExcDlgt Critical,voidDlgt Failure,voidDlgt Timeout )

{

Thread t = new Thread(delegate() { try { if (!del()) Failure(); } catch (Exception e) { Critical(e); } } );

t.Start();

if (!t.Join(TimeOutMs)) Timeout();

}

}

}

Way shorter as you might see