public Task SendMessage(int noticeId, ISendingNotice sendingNotice) { return(Task.Factory.StartNew(() => { var notice = Db.Notices.First(n => n.idNotice == noticeId); var users = notice.Users.Where(u => u.idState == 1); var locker = new object(); Parallel.ForEach(users, ((user, state) => { try { sendingNotice.Send(notice, user); lock (locker) { Db.Histories.Add(new Histories() { idNotice = noticeId, idState = 3, idUser = user.idUser, Date = DateTime.Now }); Db.SaveChanges(); } } catch (Exception e) { lock (locker) { Db.Histories.Add(new Histories() { idNotice = noticeId, idState = 4, Comment = e.Message, idUser = user.idUser, Date = DateTime.Now }); Db.SaveChanges(); } } })); })); }
public HomeController(IRepository repository, ISendingNotice sendingNotice) { Repository = repository; SendingNotice = sendingNotice; }
public Task SendMessage(int noticeId, ISendingNotice sendingNotice) { throw new System.NotImplementedException(); }