ピップスさん、こんにちは。
ボタンを使用してバッチファイルを実行する Tkx gui があります。バッチ ファイルは別のスレッドで実行されます。これは、GUI を引き続き使用できるようにするためです。バッチファイルの実行をキャンセルするキャンセルボタンを実装したい。
Kill シグナルを送信しようとしましたが、スレッドのみが終了し、バッチ ファイルは終了しません。以下は、実行サブルーチンとキャンセル サブルーチンのコードです。
ああ、バッチファイルを編集することはできません。
my $t1;
sub runbutton{
$bar->g_grid();
$bar->start();
$t1 = threads->create(sub {
local $SIG{'KILL'} = sub { threads->exit };
system("timer.bat");
});
$t1->set_thread_exit_only(1);
my $start = time;
my $end = time;
while ($t1->is_running()) {
$end = time();
$mytext = sprintf("%.2f\n", $end - $start);
Tkx::update();
}
$bar->stop();
$bar->g_grid_forget();
$b4->g_grid_forget();
}
sub cancelbutton
{
$t1->kill('KILL')->detach();
}