Click here to Skip to main content
15,885,767 members
Home / Discussions / C#
   

C#

 
GeneralRe: About Async Event Pin
Marc Clifton19-Jul-16 1:50
mvaMarc Clifton19-Jul-16 1:50 
GeneralRe: About Async Event Pin
Richard Deeming19-Jul-16 1:55
mveRichard Deeming19-Jul-16 1:55 
AnswerRe: About Async Event Pin
Super Lloyd19-Jul-16 3:07
Super Lloyd19-Jul-16 3:07 
GeneralRe: About Async Event Pin
Super Lloyd19-Jul-16 3:19
Super Lloyd19-Jul-16 3:19 
GeneralRe: About Async Event Pin
Super Lloyd19-Jul-16 14:32
Super Lloyd19-Jul-16 14:32 
GeneralRe: About Async Event Pin
Richard Deeming20-Jul-16 1:51
mveRichard Deeming20-Jul-16 1:51 
GeneralRe: About Async Event Pin
Super Lloyd20-Jul-16 2:08
Super Lloyd20-Jul-16 2:08 
GeneralRe: About Async Event Pin
Richard Deeming19-Jul-16 1:54
mveRichard Deeming19-Jul-16 1:54 
If you have multiple handlers subscribed to the event, they will run sequentially. I'd be inclined to let them run in parallel.

You should probably also add a lock around the code that retrieves the list of handlers, to match the lock in the add / remove accessors.

C#
private static readonly Task CompletedTask = Task.FromResult(true);

private IEnumerable<Func<Task>> GetAlarmInvocationList()
{
    lock (this)
    {
        Func<Task> handler = eAlarmReceived;
        if (handler == null) return null;
        return handler.GetInvocationList().Cast<Func<Task>>().ToList();
    }
}

internal Task OnAlarm()
{
    var eTasks = GetAlarmInvocationList();
    if (eTasks == null) return CompletedTask;
    
    var tasks = eTasks.Select(fn => fn());
    return Task.WhenAll(tasks);
}




"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer


GeneralRe: About Async Event Pin
Super Lloyd19-Jul-16 2:55
Super Lloyd19-Jul-16 2:55 
QuestionHow can I run multiple powershell commands in a C#/powershell runspace? Pin
turbosupramk318-Jul-16 4:02
turbosupramk318-Jul-16 4:02 
QuestionRe: How can I run multiple powershell commands in a C#/powershell runspace? Pin
Richard MacCutchan18-Jul-16 4:22
mveRichard MacCutchan18-Jul-16 4:22 
AnswerRe: How can I run multiple powershell commands in a C#/powershell runspace? Pin
turbosupramk318-Jul-16 4:35
turbosupramk318-Jul-16 4:35 
GeneralRe: How can I run multiple powershell commands in a C#/powershell runspace? Pin
Richard MacCutchan18-Jul-16 4:51
mveRichard MacCutchan18-Jul-16 4:51 
GeneralRe: How can I run multiple powershell commands in a C#/powershell runspace? Pin
turbosupramk318-Jul-16 4:58
turbosupramk318-Jul-16 4:58 
GeneralRe: How can I run multiple powershell commands in a C#/powershell runspace? Pin
Richard MacCutchan18-Jul-16 6:15
mveRichard MacCutchan18-Jul-16 6:15 
GeneralRe: How can I run multiple powershell commands in a C#/powershell runspace? Pin
turbosupramk318-Jul-16 7:49
turbosupramk318-Jul-16 7:49 
GeneralRe: How can I run multiple powershell commands in a C#/powershell runspace? Pin
turbosupramk319-Jul-16 4:10
turbosupramk319-Jul-16 4:10 
QuestionClose Form Popup before opening MessageBox.Show and the form use delegate ? Pin
Member 245846717-Jul-16 22:47
Member 245846717-Jul-16 22:47 
AnswerRe: Close Form Popup before opening MessageBox.Show and the form use delegate ? Pin
OriginalGriff17-Jul-16 22:51
mveOriginalGriff17-Jul-16 22:51 
Questionc# parser questions. Pin
elfenliedtopfan517-Jul-16 13:13
elfenliedtopfan517-Jul-16 13:13 
AnswerRe: c# parser questions. Pin
OriginalGriff17-Jul-16 21:42
mveOriginalGriff17-Jul-16 21:42 
GeneralRe: c# parser questions. Pin
elfenliedtopfan518-Jul-16 3:31
elfenliedtopfan518-Jul-16 3:31 
GeneralRe: c# parser questions. Pin
OriginalGriff18-Jul-16 4:11
mveOriginalGriff18-Jul-16 4:11 
GeneralRe: c# parser questions. Pin
elfenliedtopfan518-Jul-16 7:24
elfenliedtopfan518-Jul-16 7:24 
GeneralRe: c# parser questions. Pin
OriginalGriff18-Jul-16 8:02
mveOriginalGriff18-Jul-16 8:02 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.