0

v4.5.1に.NETコンソールアプリケーション(C#で)を作成しました。私Main方法は次のようになります(ProcessCommandによって処理)可能なコマンドの.NETコンソールアプリケーションでCancelKeyPressイベントを使用する

public static void Main(string[] args) 
{ 
    Console.CancelKeyPress += delegate 
           { 
            CancelToken.Cancel(); 
           }; 

    var kbTask = Task.Run(async() => 
           { 
            while (true) 
            { 
             await ProcessCommand(Console.ReadLine()); 
            } 
           }, CancelToken.Token); 

    kbTask.Wait(CancelToken.Token); 
} 

一つ私がConsole.CancelKeyPressデリゲート経由でCTRL + Cを使用してキャンセルできるようにしたいのですが、長時間実行プロセスを起動します。

これを行うと、「mscorlib.dllがロードされていない」というタブが開き、何も行われません。コンソールは開いたまま応答しません。

私はまた、デバッグの外でアプリを実行しようとしましたが、実行可能ファイルが見つかりません。

+0

キャンセルトークンの状態が設定されていると、中断後に 'while'ループ内でキャンセルトークンの状態をチェックする必要があります。 – Sean

+0

クリスタルボールはあなたがAvastを使用していると言います。できるだけ早くアンインストールしてください。 –

+0

@HansPassantあなたのクリスタルボールが間違っています。 Windows Defender以外のAVはインストールされていません。 – awj

答えて

0

ツール、オプション、デバッグ、シンボルに移動し、キャッシュの場所を設定します。上記のようにloadを押すと、必要なシンボルがフェッチされ、指定したキャッシュ位置に格納されます。

Microsoftのコンパイラツールは、.pdb拡張子(プログラムデータベース)を持つ別々のファイルにシンボルを作成します。これにより、リリースバイナリ用に分離されたシンボルを作成することができます。シンボルサーバーを使用すると、デバッグ中に特定のバージョンのDLLに一致するシンボルファイルを取得できます。このシステムを独自の製品バイナリ用に構成することもできます。これは、エンドユーザーのマシンのクラッシュを死後デバッグする場合に非常に役立ちます。

パブリックシンボルの使用の詳細については、Microsoft Documentationを参照してください。

+0

これを実行すると、シンボルが動的にロードされているのがわかりますが、Ctrl + Cキーを押すと、Visual Studioは「ソースが利用できません」というタブを開き、コンソールが応答しなくなります。 – awj

+0

"ソースが利用できません"アプリケーションが管理されていないコードを読み取ろうとしているときにエラーが発生します。私はあなたのためにこれを整理させてください。 – BilalAhmed

関連する問題