私のWPFアプリケーションには、BlueBeamQServerを使用してファイルをPDFに変換する長時間実行プロセスがあります。プロセスが行われるとき、それはフリーズするべきではないので、以下のコードはそれを処理するために書かれています:
private void btn_convert_Click(object sender, RoutedEventArgs e)
{
thread = new Thread(new ThreadStart(WorkerMethod));
thread.SetApartmentState(ApartmentState.STA);
thread.IsBackground = true;
thread.Name = "PDF";
thread.Start();
}
WorkerMethod()
{
//code to connect to Q server and conversion goes here
}
これで、プロセスが開始されると、キャンセルボタンがユーザーに表示されます。ユーザーがキャンセルを押したら、開始したスレッドを中止したいと思います。私は以下のようにコードを書きました:
private void btn_cancel_Click(object sender, RoutedEventArgs e)
{
if (thread.Name == "PDF")
thread.Abort();
}
ただし、スレッドは中止せず、プロセスを続行します。貴重なご提案をお願いします。