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();
        }