running in new thread mvvm light C#
public class MainViewModel : ViewModelBase
{
public const string StatusPropertyName = "Status";
private bool _condition = true;
private RelayCommand _startSuccessCommand;
private string _status;
public RelayCommand StartSuccessCommand
{
get
{
return _startSuccessCommand
?? (_startSuccessCommand = new RelayCommand(
() =>
{
var loopIndex = 0;
ThreadPool.QueueUserWorkItem(
o =>
{
// This is a background operation!
while (_condition)
{
// Do something
DispatcherHelper.CheckBeginInvokeOnUI(
() =>
{
// Dispatch back to the main thread
Status = string.Format("Loop # {0}",
loopIndex++);
});
// Sleep for a while
Thread.Sleep(500);
}
});
}));
}
}
public string Status
{
get
{
return _status;
}
set
{
Set(StatusPropertyName, ref _status, value);
}
}
}