protected override void OnBarUpdate() { if (buttonsArray == null) return; if (Global.SelectedTradeDirection == Global.Direction.LONG) { System.Windows.Threading.Dispatcher.CurrentDispatcher.Invoke(() => { buttonsArray[SHORT_BUTTON].Background = new SolidColorBrush(Colors.Transparent); }); ForceRefresh(); } else if (Global.SelectedTradeDirection == Global.Direction.SHORT) { System.Windows.Threading.Dispatcher.CurrentDispatcher.Invoke(() => { buttonsArray[LONG_BUTTON].Background = new SolidColorBrush(Colors.Transparent); }); ForceRefresh(); } else { System.Windows.Threading.Dispatcher.CurrentDispatcher.Invoke(() => { buttonsArray[LONG_BUTTON].Background = new SolidColorBrush(Colors.Transparent); buttonsArray[SHORT_BUTTON].Background = new SolidColorBrush(Colors.Transparent); }); ForceRefresh(); } }
Announcement
Collapse
Looking for a User App or Add-On built by the NinjaTrader community?
Visit NinjaTrader EcoSystem and our free User App Share!
Have a question for the NinjaScript developer community? Open a new thread in our NinjaScript File Sharing Discussion Forum!
Have a question for the NinjaScript developer community? Open a new thread in our NinjaScript File Sharing Discussion Forum!
See more
See less
Partner 728x90
Collapse
NinjaTrader
How would I resolve thread owning issue in OnBarUpdate?
Collapse
X
-
How would I resolve thread owning issue in OnBarUpdate?
I'm newer to the UI things and would like the buttons to change color based on a trade direction, but I'm stuck on a thread issue where it cannot access the buttonsArray because a different thread owns it. I tried CurrentDispatcher.Invoke without any success. Any other ideas to get this to work?
Code:Tags: None
-
I resolved it.
Code:protected override void OnBarUpdate() { if (buttonsArray == null) return; if (buttonsArray[LONG_BUTTON] == null || buttonsArray[SHORT_BUTTON] == null) return; if (Global.SelectedTradeDirection == Global.Direction.LONG) { if (buttonsArray[SHORT_BUTTON].Dispatcher.CheckAccess()) { ResetShortButton(); } else { this.Dispatcher.InvokeAsync(new Action(() => { ResetShortButton(); })); } ForceRefresh(); } else if (Global.SelectedTradeDirection == Global.Direction.SHORT) { if (buttonsArray[LONG_BUTTON].Dispatcher.CheckAccess()) { ResetLongButton(); } else { this.Dispatcher.InvokeAsync(new Action(() => { ResetLongButton(); })); } ForceRefresh(); } else { if (buttonsArray[SHORT_BUTTON].Dispatcher.CheckAccess()) { ResetLongButton(); ResetShortButton(); } else { this.Dispatcher.InvokeAsync(new Action(() => { ResetLongButton(); })); this.Dispatcher.InvokeAsync(new Action(() => { ResetShortButton(); })); } ForceRefresh(); } }
Last edited by tonystarks; 11-11-2022, 08:24 AM.
- Likes 1
Latest Posts
Collapse
Topics | Statistics | Last Post | ||
---|---|---|---|---|
Started by andrewtrades, Today, 04:57 PM
|
1 response
9 views
0 likes
|
Last Post Today, 05:02 PM | ||
Started by chbruno, Today, 04:10 PM
|
0 responses
6 views
0 likes
|
Last Post
by chbruno
Today, 04:10 PM
|
||
Started by josh18955, 03-25-2023, 11:16 AM
|
6 responses
436 views
0 likes
|
Last Post
by Delerium
Today, 03:42 PM
|
||
Started by FAQtrader, Today, 03:35 PM
|
0 responses
8 views
0 likes
|
Last Post
by FAQtrader
Today, 03:35 PM
|
||
Started by rocketman7, Today, 09:41 AM
|
5 responses
19 views
0 likes
|
Last Post Today, 03:33 PM |
Comment