10

誰かが違いを知っていますか

Dispatcher.BeginInvoke(DispatcherPriority.Background, new ThreadStart(() =>
{

Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() =>
{
4

2 に答える 2

12

違いはないはずです。ThreadStartとしてAction定義されます。

public delegate void ThreadStart();

public delegate void Action();

つまり、パラメーターも戻り値もないデリゲートです。したがって、意味的には同じです。


ただし、コンストラクターと強く関連しているため、Actionand notを使用します。ThreadStartThreadStartThreadThreadStart

于 2012-10-16T14:19:13.257 に答える
5

のコンテキストでとの間に違いあるようです。ThreadStartActionBeginInvoke

Vlad が述べたように、どちらもデリゲート内でコードを正しく実行します。

ただし、デリゲート内で例外が発生した場合、ThreadStart結果はTargetInvocationException. しかし、使用Actionすると、デリゲートからの正しい例外が得られます。

Actionこのため、優先する必要があります。

この質問を見てください。

于 2015-02-26T15:27:42.917 に答える