diff options
| author | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2018-02-21 16:11:30 +0100 |
|---|---|---|
| committer | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2018-02-21 16:11:30 +0100 |
| commit | 05e7cd5133826afd42d215e08c4874ee48ed49be (patch) | |
| tree | 2f449777278cc8b4805a4e80d7ee81b3863bc4a1 /src/GraphicObjects/TabView.cs | |
| parent | 30b49efa1763ebdfe82f9d69e0e7bafcdd3b25a8 (diff) | |
implement ReaderWritelLockSlim to resolve threading issues
Diffstat (limited to 'src/GraphicObjects/TabView.cs')
| -rw-r--r-- | src/GraphicObjects/TabView.cs | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/GraphicObjects/TabView.cs b/src/GraphicObjects/TabView.cs index c5292da7..abaa6ac0 100644 --- a/src/GraphicObjects/TabView.cs +++ b/src/GraphicObjects/TabView.cs @@ -176,17 +176,20 @@ namespace Crow gr.Clip (); } - lock (Children) { - TabItem[] tabItms = Children.Cast<TabItem> ().OrderBy (t => t.ViewIndex).ToArray (); - for (int i = 0; i < tabItms.Length; i++) { - if (tabItms [i] == Children [SelectedTab]) - continue; - tabItms [i].Paint (ref gr); - } + childrenRWLock.EnterReadLock (); - if (SelectedTab < tabItms.Length && SelectedTab >= 0) - Children [SelectedTab].Paint (ref gr); + TabItem[] tabItms = Children.Cast<TabItem> ().OrderBy (t => t.ViewIndex).ToArray (); + for (int i = 0; i < tabItms.Length; i++) { + if (tabItms [i] == Children [SelectedTab]) + continue; + tabItms [i].Paint (ref gr); } + + if (SelectedTab < tabItms.Length && SelectedTab >= 0) + Children [SelectedTab].Paint (ref gr); + + childrenRWLock.ExitReadLock (); + gr.Restore (); } |