У меня есть приложение, которое я создаю, которое использует MVVM, и мне нужно разделить работу на несколько потоков, и я понятия не имею, как и почему это не работает, что я делаю. Мне нужно, чтобы пользовательский интерфейс оставался отзывчивым, но я хочу деактивировать кнопку, как только я ее нажму. мой код выглядит так В результате я получаю возврат от categoryconverter, и кнопка возвращается в isAvailable, а поток приостанавливается до следующего нажатия кнопки? но сейчас я не могу заставить его работать только в поточной части.
MainWindowViewModel:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Windows.Input;
using DataConverter.Checkers;
using DataConverter.Converters;
using DataConverter.Command;
using DataConverter.Objects;
using DataConverter.Threads;
namespace DataConverter.ViewModels
{
public class MainWindowViewModel : BaseViewModel
{
public List<Category> categories = new List<Category>();
public string path { get; set; }
public bool runButtonWorks { get; set; }
public string errorMessage { get; set; }
public ICommand run { get; set; }
public MainWindowViewModel()
{
runButtonWorks = true;
ThreadOne th = new ThreadOne();
Thread t1 = new Thread(new ThreadStart(th.startProgram(path)));
run = new RelayCommand(t1.Start);
}
}
}
ThreadOne:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DataConverter.Checkers;
using DataConverter.Converters;
namespace DataConverter.Threads
{
class ThreadOne
{
public void startProgram(string path)
{
}
private bool CategoryWorker(string path)
{
FileCheck checkFile = new FileCheck();
CategoryConverter categoryConverter = new CategoryConverter();
if (checkFile.checkFile(path))
{
runButtonWorks = false;
categoryConverter.getCategoryList(path);
return true;
}
else
{
return false;
}
}
}
}