Added Util.FireAndForget(), to replace leaking calls to Delegate.BeginInvoke()

remotes/origin/0.6.7-post-fixes
John Hurliman 2009-09-01 11:26:08 -07:00 committed by Diva Canto
parent 87ec14c5dc
commit 584c113836
1 changed files with 22 additions and 0 deletions

View File

@ -1169,5 +1169,27 @@ namespace OpenSim.Framework
return found.ToArray();
}
#region FireAndForget Threading Pattern
public static void FireAndForget(System.Threading.WaitCallback callback)
{
callback.BeginInvoke(null, EndFireAndForget, callback);
}
public static void FireAndForget(System.Threading.WaitCallback callback, object obj)
{
callback.BeginInvoke(obj, EndFireAndForget, callback);
}
private static void EndFireAndForget(IAsyncResult ar)
{
System.Threading.WaitCallback callback = (System.Threading.WaitCallback)ar.AsyncState;
callback.EndInvoke(ar);
ar.AsyncWaitHandle.Close();
}
#endregion FireAndForget Threading Pattern
}
}