Skip to content

Commit f84009d

Browse files
Don't use volatile field to fix VB conversion
1 parent 3b009e9 commit f84009d

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

CS/LockOnRowEdit_CodeBehind/MainWindow.xaml.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public partial class MainWindow : Window {
2525

2626
Timer updateTimer;
2727

28-
volatile bool updatesLocker;
28+
bool updatesLocker;
2929

3030
Random random;
3131

@@ -36,12 +36,12 @@ public MainWindow() {
3636
updateTimer = new Timer(UpdateRows, null, 0, 1);
3737
}
3838

39-
private void OnRowEditStarted(object sender, RowEditStartedEventArgs e) => updatesLocker = true;
39+
private void OnRowEditStarted(object sender, RowEditStartedEventArgs e) => Volatile.Write(ref updatesLocker, true);
4040

41-
private void OnRowEditFinished(object sender, RowEditFinishedEventArgs e) => updatesLocker = false;
41+
private void OnRowEditFinished(object sender, RowEditFinishedEventArgs e) => Volatile.Write(ref updatesLocker, false);
4242

4343
void UpdateRows(object parameter) {
44-
if(!updatesLocker) {
44+
if(!Volatile.Read(ref updatesLocker)) {
4545
var row = data[random.Next(0, data.Count)];
4646
if(row.ShouldUpdate) {
4747
row.Value = random.Next(1, 100);

CS/LockOnRowEdit_MVVM/MainViewModel.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33
using DevExpress.Mvvm.Xpf;
44
using System;
55
using System.Collections.ObjectModel;
6+
using System.ComponentModel;
67
using System.Linq;
78
using System.Threading;
9+
using System.Windows.Threading;
810

911
namespace LockOnRowEdit_MVVM {
1012
public class DataItem : BindableBase {
@@ -27,7 +29,7 @@ public class MainViewModel : ViewModelBase {
2729

2830
Timer updateTimer;
2931

30-
volatile bool updatesLocker;
32+
bool updatesLocker;
3133

3234
public MainViewModel() {
3335
random = new Random();
@@ -36,13 +38,13 @@ public MainViewModel() {
3638
}
3739

3840
[Command]
39-
public void LockUpdates(RowEditStartedArgs args) => updatesLocker = true;
41+
public void LockUpdates(RowEditStartedArgs args) => Volatile.Write(ref updatesLocker, true);
4042

4143
[Command]
42-
public void UnlockUpdates(RowEditFinishedArgs args) => updatesLocker = false;
44+
public void UnlockUpdates(RowEditFinishedArgs args) => Volatile.Write(ref updatesLocker, false);
4345

4446
void UpdateRows(object parameter) {
45-
if(!updatesLocker) {
47+
if(!Volatile.Read(ref updatesLocker)) {
4648
var row = Data[random.Next(0, Data.Count)];
4749
if(row.ShouldUpdate) {
4850
row.Value = random.Next(1, 100);

0 commit comments

Comments
 (0)