The dispatcher class of WPF is described as follows:
Public dispatcheroperation begininvoke (delegate method, Params object [] ARGs );
We have to do this when using:
Dispatcher. begininvoke (Action) Delegate () {// do something ...});
Don't you think it's ugly? It also needs to be forcibly converted to action.
But you said, its parameter is delegate. What should I do?
Oh, you forgot the extension method?
If we can change:
Dispatcher. begininvoke () =>{// do something ...});
In this way, it is much more convenient to use a lambda.
So we can write a dispatcher extension method:
Public static class dispatcherextensions {public static dispatcheroperation begininvoke (This dispatcher, action Action) {return dispatcher. begininvoke (action, new object [0]);} public static dispatcheroperation begininvoke (This dispatcher, Action action, dispatcherpriority priority) {return dispatcher. begininvoke (action, priority, new object [0]);} public static void invoke (This dispatcher, action Action) {dispatcher. invoke (action, new object [0]);} public static void invoke (This dispatcher, Action action, timespan timeout) {dispatcher. invoke (action, timeout, new object [0]);} public static void invoke (This dispatcher, Action action, dispatcherpriority priority) {dispatcher. invoke (action, priority, new object [0]);} public static void invoke (This dispatcher, Action action, timespan timeout, dispatcherpriority priority) {dispatcher. invoke (action, timeout, priority, new object [0]) ;}}