diff options
author | E.Z. Hart <hartez@users.noreply.github.com> | 2017-05-16 11:27:41 -0600 |
---|---|---|
committer | Jason Smith <jason.smith@xamarin.com> | 2017-05-16 11:50:17 -0700 |
commit | e1734092bec06d5e013144f13c947c040586cec8 (patch) | |
tree | cb523df2f2c0e490847222f1e5a0afa84acb67cb /Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla55365.cs | |
parent | bb632ea0666d22f23c6f48264800ddf32aeaf25f (diff) | |
download | xamarin-forms-e1734092bec06d5e013144f13c947c040586cec8.tar.gz xamarin-forms-e1734092bec06d5e013144f13c947c040586cec8.tar.bz2 xamarin-forms-e1734092bec06d5e013144f13c947c040586cec8.zip |
Remove VisualElement finalizer (#918)
* [Controls] Add repo for bugzilla 55365
* Remove finalizer from VisualElement
* Remove unused using directive
* Removing test for 44074
* Update docs
Diffstat (limited to 'Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla55365.cs')
-rw-r--r-- | Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla55365.cs | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla55365.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla55365.cs new file mode 100644 index 00000000..1ab99a2e --- /dev/null +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla55365.cs @@ -0,0 +1,90 @@ +using System; +using System.Collections.ObjectModel; +using System.Collections.Specialized; +using Xamarin.Forms.CustomAttributes; +using Xamarin.Forms.Internals; +#if UITEST +using NUnit.Framework; + +#endif + +namespace Xamarin.Forms.Controls.Issues +{ + [Preserve(AllMembers = true)] + [Issue(IssueTracker.Bugzilla, 55365, "~VisualElement crashes with System.Runtime.InteropServices.COMException", PlatformAffected.UWP)] + public class Bugzilla55365 : TestContentPage + { + readonly StackLayout _itemsPanel = new StackLayout(); + readonly DataTemplate _itemTemplate = new DataTemplate(CreateBoxView); + readonly StackLayout _layout = new StackLayout(); + +#if UITEST + [Test] + public void ForcingGCDoesNotCrash() + { + RunningApp.WaitForElement("Clear"); + RunningApp.Tap("Clear"); + RunningApp.Tap("Garbage"); + RunningApp.WaitForElement("Success"); + } +#endif + + protected override void Init() + { + var viewModel = new ObservableCollection<_55365Item> + { + new _55365Item { Subject = 65 } + }; + + viewModel.CollectionChanged += OnCollectionChanged; + + _itemsPanel.BindingContext = viewModel; + + foreach (_55365Item item in viewModel) + { + _itemTemplate.SetValue(BindingContextProperty, item); + var view = (View)_itemTemplate.CreateContent(); + _itemsPanel.Children.Add(view); + } + + var clearButton = new Button { Text = "Clear", Command = new Command(o => viewModel.Clear()) }; + _layout.Children.Add(clearButton); + + var collectButton = new Button { Text = "Garbage", Command = new Command(o => + { + GC.Collect(); + GC.WaitForPendingFinalizers(); + _layout.Children.Add(new Label {Text = "Success"}); + }) }; + _layout.Children.Add(collectButton); + _layout.Children.Add(_itemsPanel); + + Content = _layout; + } + + static object CreateBoxView() + { + var boxView1 = new BoxView { HeightRequest = 100, Color = new Color(0.55, 0.23, 0.147) }; + var setter1 = new Setter { Property = BoxView.ColorProperty, Value = "#FF2879DD" }; + var trigger1 = new DataTrigger(typeof(BoxView)) { Binding = new Binding("Subject"), Value = 65 }; + trigger1.Setters.Add(setter1); + boxView1.Triggers.Add(trigger1); + return boxView1; + } + + void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) + { + if (e.Action == NotifyCollectionChangedAction.Reset) + { + // reset the list + _itemsPanel.Children.Clear(); + } + } + + [Preserve(AllMembers = true)] + public class _55365Item + { + public int Subject { get; set; } + } + } +}
\ No newline at end of file |