|
Parallel.Invoke(
()=> MeineSelectMethode1()
,()=>MeineSelectMethode2)
);
//Verarbeite Ergebnisse aus 1 und 2
Task[] tasks = new Task[3]
{
Task.Factory.StartNew(() => MethodA()),
Task.Factory.StartNew(() => MethodB()),
Task.Factory.StartNew(() => MethodC())
};
//Block until all tasks complete.
Task.WaitAll(tasks);
|
|
#region Nested type: SynchronizeTasks
/// <summary>
/// synchonize server tasks
/// </summary>
public class SynchronizeTasks
{
#region Delegates
/// <summary>
/// delegate for notification
/// </summary>
public delegate void AllCompletedDelegate();
#endregion
/// <summary>
/// tasklist
/// </summary>
private readonly List<string> _tasks = new List<string>();
/// <summary>
/// notify-event
/// </summary>
public event AllCompletedDelegate OnAllCompleted;
/// <summary>
/// refresh tasklist and reset event
/// </summary>
public void Clear()
{
_tasks.Clear();
OnAllCompleted = null;
}
/// <summary>
/// add task
/// </summary>
/// <param name = "task"></param>
public void Add(string task)
{
_tasks.Add(task);
}
/// <summary>
/// task completed
/// </summary>
/// <param name = "task"></param>
public void Completed(string task)
{
if (_tasks.Contains(task))
{
_tasks.Remove(task);
if (!_tasks.Any())
{
//fire event when all tasks are completed
OnAllCompleted();
//clean up eventhandler for garbage collector
OnAllCompleted = null;
}
}
}
}
#endregion
Tasks = new SynchronizeTasks();
Tasks.Add("DoSomething1");
Tasks.Add("DoSomething2");
Tasks.OnAllCompleted += Accomplished;
if (Tasks != null)
{
Tasks.Completed(propertyName);
}
|
Kenne mich wenig mit Silverlight aus aber glaube nicht, unter http://msdn.microsoft.com/en-us/library/dd992634.aspx ist bei den Version infos zumindest kein silverlight aufgeführt
s. a. http://forums.silverlight.net/forums/p/21522/353335.aspx#353335 – Gentlehag 15.02.2011
|
private int _counter;
private void Start()
{
_counter = 5;
//... 5 async methoden aufrufen
}
private void CallBack1()
{
_counter--;
// do stuff for callback 1
Resume();
}
//.
//..
//...
private void CallBackN()
{
_counter--;
// do stuff for callback N
Resume();
}
private void Resume()
{
if(_counter == 0)
{
// do your stuff here...
}
}
|