Привет всем !
В энциклопедии юнных сурков сказано CAUTION Always call EndInvoke after your asynchronous call completes.
и все начинает выглядить на раскаряку. Неужели для того чтобы получить fire-and-forget нужно плодить всяких "монстриков" типа
public class AsyncHelper
{
delegate void DynamicInvokeShimProc( Delegate d, object[] args );
static DynamicInvokeShimProc dynamicInvokeShim = new DynamicInvokeShimProc(DynamicInvokeShim);
static AsyncCallback dynamicInvokeDone = new AsyncCallback(DynamicInvokeDone);
public static void FireAndForget( Delegate d, params object[] args )
{
dynamicInvokeShim.BeginInvoke(d, args, dynamicInvokeDone, null);
}
static void DynamicInvokeShim( Delegate d, object[] args )
{
d.DynamicInvoke(args);
}
static void DynamicInvokeDone( IAsyncResult ar )
{
dynamicInvokeShim.EndInvoke(ar);
}
}
и проч? (Это мне показалось наиудобнейшим методом)
Я откровенно немогу даже догадаться какова логика работы асинхронных делигатов?
Неужели она предполагала что программер будет плодить подобное?
А что будет если не вызывать EndInvoke? Я попробывал ничего страшного не происходит.
Поделитесь своими соображениями, пожалуйста.
С Уважением Сергей Чикирев.