C# Windows アプリケーションで 1 つの問題がありました。
ここでは、C# Windows アプリケーションを使用しています。
私の質問のような、送信とキャンセルの2つのボタンを持つ1つのフォームがあります
ボタンをクリックすると、1 つのスレッドが表示されます。
スレッドには、以下のコード部分を持つ 1 つのストアド プロシージャが含まれています。ここでは、.csv ファイルから一括情報を選択し、temp_"ユーザー指定ファイル名.csv" でサーバー プロジェクト フォルダーに読み込みます。
処理が完了すると、temp_"ユーザー指定ファイル名.csv" の情報を "ユーザー指定ファイル名.csv" にコピーし、最後に temp_"ユーザー指定ファイル名.csv" をサーバー フォルダーから削除します。その正常に動作します。
exec master..xp_cmdshell ''bcp "select ''''Column1'''',''''Column2'''',''''Column3'''',''''Column4'''', ''''Column4'''',''''Column5'''',''''Column6'''',''''Column7'''',''''Column8''''" queryout "' + @Parent_Folder + @Transformed_Tbl + '.csv" -c -t, -T -Slocalhost'''
exec master..xp_cmdshell ''bcp Databasename..' + @database table+ ' out "' + @serverfolder+ 'temp_' + @user 指定のファイル名 + '.csv" -c -t, -T -Slocalhost'''
exec master..xp_cmdshell ''copy /b "' + @serverfolder+ @ユーザー指定のファイル名 + '.csv" + "' + @serverfolder+ 'temp_' + @ユーザー指定のファイル名 + '.csv" "' + @serverfolder + @ユーザー指定ファイル名+ '.csv"'''
問題なく動いていますが、途中でキャンセルボタンを押すと、ここで実行中のスレッドを中断し、「temp_user指定ファイル名.csv」&「user指定ファイル名.csv」をフォルダから削除して更新しています。データベース。
すべてのSQLセッションを中止して閉じ、データベースを更新しますが、ファイル「temp_user指定のファイル名.csv」は削除しません。なぜなら、サーバーフォルダーでまだbcpプロセスがまだ実行されており、SQLサーバーが1つのアライブセッションを持っているからです。
アプリケーションを閉じると、bcp プロセスがまだ実行されています。
キャンセル ボタンをクリックしたときに bcp.exe セッションを閉じる方法。
緊急に解決策を教えてください..