1

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 セッションを閉じる方法。

緊急に解決策を教えてください..

4

0 に答える 0