Надеюсь, вы можете помочь.
Сценарий
Приложение WPF, вызывающее службу wcf для покупки продуктов и т. Д.
Клиент может выбрать 20 продуктов в пользовательском интерфейсе и нажать кнопку «Купить», теперь для каждого обрабатываемого продукта мне нужно сообщить о статусе EG («ОК», «Нет в наличии», «Занят» и т. Д.)
У меня есть txtReportProgress, который привязан к BuyCommand.
Проблема
Несмотря на то, что все работает нормально, я получаю уведомление о каждом обработанном продукте, но он синхронизируется и фактически не сообщает о шагах в правильном порядке.
Я думаю, что это связано с тем фактом, что я НЕ реализовал многопоточность, но я не знаю, как это сделать.
Я прочитал, я могу использовать "Диспетчер" ввода / вывода фонового работника, но не могу заставить его работать.
Хороший пример, чтобы дать вам идею.
Можете ли вы помочь мне и дать несколько советов?
---CustomerViewModel
public ICommand BuyCommand
{
get
{
if (BuyCommand == null)
{
BuyCommand = new RelayCommand(param => Buy(), param => CanBuy);
}
return BuyCommand;
}
}
private void Buy()
{
ReportProgress("Buying Progress is starting");
ProductStatus status=myService.IsProductAvailable();
myService.ProcessProducts(); //For each product that is processed service does a callback and NotificationReceivedfromService is fired.THIS WORKS!!
ReportProgress(status);
var result =DoSomethingElse();
ReportProgress(result);
}
void NotificationReceivedFromService(object sender, StatusEventArg e)
{
//update the UI
ReportProgress(e.Message);
}
static bool CanBuy
{
get
{
return true;
}
}
public string CustomerLog
{
get { return _customerModel.CustomerLog; }
set
{
_customerModel.CustomerLog = value;
base.OnPropertyChanged("CustomerLog");
}
}
internal void ReportProgress(string text)
{
CustomerLog += text + Environment.NewLine;
}