protected override object SetUpMember(int index, object member) { SheetModel sheet = ((SheetModel)member); using (Synchronizer.Lock(sheet.SyncRoot)) { // Don't create a network service for the sheet if it is remote, // UNLESS this is a student submission slide in which case we're responsible for rebroadcasting its ink. if ((sheet.Disposition & SheetDisposition.Remote) != 0 && (this.m_Service.m_Slide.Disposition & SlideDisposition.StudentSubmission) == 0) { return(null); } } Group receivers = Group.AllParticipant; if ((this.m_Service.m_Slide.Disposition & SlideDisposition.StudentSubmission) != 0) { receivers = Group.Submissions; } this.m_Service.SendSheetInformation(sheet, this.m_Selector, receivers); SheetNetworkService service = SheetNetworkService.ForSheet(this.m_Service.m_Sender, this.m_Service.m_Presentation, this.m_Service.m_Deck, this.m_Service.m_Slide, sheet, this.m_Selector); return(service); }
public void ForceUpdate(Group receivers) { using (Synchronizer.Lock(this.Owner.SyncRoot)) { foreach (SheetNetworkService service_ in this.Tags) { SheetNetworkService service = service_; // For access by delayed delgate. if (service != null) { this.m_Service.m_Sender.Post(delegate() { service.ForceUpdate(receivers); }); } } } }