public override NSObject GetObjectValue(NSTableView tableView, NSTableColumn tableColumn, int row) { Transmission transmission = null; lock (lockTransmissionItems) { if (row >= TransmissionItems.Count) { return new NSNull(); } transmission = TransmissionItems[row]; transmission.PropertyChanged += (object sender, PropertyChangedEventArgs e) => { var t = sender as Transmission; if (e.PropertyName == Utils.NameOf(() => t.Percent)) { BeginInvokeOnMainThread(delegate { var widget = tableView.GetView(0, row, true) as TransmissionWidgetItem; this.UpdateViewProgress(widget, t); this.UpdateViewLastModificationDate(widget, t.LastModification); }); } else if (e.PropertyName == Utils.NameOf(() => t.BitsPerSecond)) { BeginInvokeOnMainThread(delegate { this.UpdateWidgetStatus(tableView.GetView(0, row, true) as TransmissionWidgetItem, t); }); } }; } BeginInvokeOnMainThread(delegate { var widget = tableView.GetView(0, row, false) as TransmissionWidgetItem; if (widget != null) { widget.labelName.StringValue = transmission.FileName; widget.labelName.ToolTip = transmission.Path; this.UpdateViewLastModificationDate(widget, transmission.LastModification); this.UpdateWidgetStatus(widget, transmission); this.UpdateViewProgress(widget, transmission); } }); return new NSNull(); }