サーバーに接続できません、アプリケーションが開きません

ダリルギル

現在、ローカルマシンでサンドボックスWebサーバーを実行していて、アプリケーションを使用して、テキストファイル(現在は1行)の内容を取得し、メインフォームに表示しています。

Webサーバーが稼働している場合、アプリケーションは正常に実行されます。これは期待どおりです。Webサーバーがダウンすると、アプリケーションは開くことを拒否します。プロセスを生成することは言うまでもありません。

アプリケーションに正しくアプローチしていると思いました。try catchWebサーバーがダウンした場合に備えて、ブロックを使用しました。コードは次のとおりです。

public String UpdaterURL = "http://192.168.0.12/DestinyScreening/Updater/Revision.txt";

public int UpdaterVersion(int CurrentVersion)
        {
            try
            {
                var RemoteRevision = (new WebClient()).DownloadString(UpdaterURL);
                return Int32.Parse(RemoteRevision);
            }
            catch
            {
                var Date = DateTime.Now.ToString("yyyy-MM-dd");
                var Time = DateTime.Now.ToString("HH:mm");
                StreamWriter file = new StreamWriter("ErrorReports\\" + Date + ".txt",true);
                file.WriteLine(Time + " - Could Not Contact Update Server");
                file.Close();
                return CurrentVersion;
            }
        }

さて、私が言うと、アプリケーションは実行されません。基本的に、Visual Studioを介してデバッグモードで実行されます。デバッグからリリースに切り替えて、実行可能ファイルを実行しても実行されないソリューションを構築しました。

提供されたコードを調べましたが、すべてが期待どおりに機能します。exeをダブルクリックしたときにアプリケーションがプロセスを生成しないのはなぜですか?

だから、全体的な質問。Visual Studioのデバッグモードで通常どおり実行されているように見えます。プロセスの生成を停止する舞台裏で何が起こっている可能性がありますか?


リリースビルドに関係しているため、このエラーを追跡できません(Visual Studioで実行されていない実行可能ファイルをダブルクリックします)。イベントビューアには、次の情報が表示されます(これは役に立ちません)。

 <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
 <System>
  <Provider Name="Application Error" /> 
  <EventID Qualifiers="0">1000</EventID> 
  <Level>2</Level> 
  <Task>100</Task> 
  <Keywords>0x80000000000000</Keywords> 
  <TimeCreated SystemTime="2015-10-13T22:54:20.000000000Z" /> 
  <EventRecordID>12976</EventRecordID> 
  <Channel>Application</Channel> 
  <Computer>Daryls8</Computer> 
  <Security /> 
  </System>
  <EventData>
  <Data>DestinyScreening.exe</Data> 
  <Data>1.0.0.0</Data> 
  <Data>561d8b7c</Data> 
  <Data>KERNELBASE.dll</Data> 
  <Data>10.0.10240.16384</Data> 
  <Data>559f3b2a</Data> 
  <Data>e0434352</Data> 
  <Data>000b3e28</Data> 
  <Data>20bc</Data> 
  <Data>01d1060a17c9bb47</Data> 
  <Data>C:\Users\Daryl\Documents\Visual Studio 2015\Projects\DestinyScreening\DestinyScreening\bin\Release\DestinyScreening.exe</Data> 
  <Data>C:\WINDOWS\SYSTEM32\KERNELBASE.dll</Data> 
  <Data>0ba5af44-c01c-4d4f-a318-855d84d4148e</Data> 
  <Data /> 
  <Data /> 
  </EventData>
  </Event>
エリックJ。

この線に当たったとき

var RemoteRevision = (new WebClient()).DownloadString(UpdaterURL); 

Webサーバーがダウンしている場合、そのコードを実行しているスレッドは、WebClientのタイムアウト値に達するまでブロックし、その後、例外をスローする必要があります。

これをUIスレッドで実行している場合、タイムアウトを待つ間、UIはフリーズします。

あなたが言う時

アプリケーションが実行されないと言うとき。基本的に、VisualStudioを介してデバッグモードで実行されます

UIスレッドで実行されるスタートアップコードでリモートバージョンを確認しているのではないかと強く思います。UIスレッドがブロックされると、アプリケーションが応答しなくなり、実行されていないように見えます。

代わりに、DownloadFileAsync()とasync / awaitパターンを利用してください

アプリケーションの要件に応じて非同期操作が完了するまで、RemoteRevisionが決定される前にユーザーが機能を操作できないようにするために、メインフォームまたは特定のメニューオプション/ボタンを無効にする必要がある場合があることに注意してください。ウェブサイトがダウンしています。

デフォルトが長すぎてニーズに合わない場合は、WebClientのタイムアウトを変更することもできます。

更新

非同期チェックを使用すると、チェックが行われている間、アプリはWindowsイベントの処理を続行できます。これは、UIがユーザー入力に応答し続けることを意味します。

通常の場合(Webサーバーが使用可能で、リモート呼び出しが高速)、続行してもよいか更新するかがすぐにわかるため、ユーザーは非同期に気付くことはありません。

Webサーバーがダウンしている場合、イベントループが処理されているため、UIはユーザーに応答し続けます。非同期呼び出しが完了するまで、UIのほとんどを無効にすることをお勧めします。そうすれば、Webサーバーが利用できない場合、または呼び出しに予想よりも時間がかかる場合、ユーザーはUIの使用を早期に開始できません。メッセージボックスを表示して(またはUIの一部を選択的に有効にして)、新しいバージョンがダウンロードされることをユーザーに警告することはできます。私はあなたがおそらくこれを達成できると思います

Form1.Enabled = false; // Whatever your main form is called
// Make the async call here
if (isNewVersionAvailable)
{
    MessageBox.Show("Exiting now to update the app version.");
    // Do whatever you do to update the app, and exit this program
}
Form1.Enabled = true;

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Elastic Beanstalkアプリケーションはデータベースに接続できませんが、サーバーは接続できます

分類Dev

QtアプリケーションでXサーバー:0.0に接続できません

分類Dev

pgadmin4:postgresqlアプリケーションサーバーに接続できませんでした。

分類Dev

pgadmin4:postgresqlアプリケーションサーバーに接続できませんでした。

分類Dev

pgadmin4:postgresqlアプリケーションサーバーに接続できませんでした。

分類Dev

pgAdmin4-postgresqlアプリケーションサーバーに接続できませんでした

分類Dev

サーバーアプリケーションからmongodbをsslに接続できません

分類Dev

PythonアプリケーションがPostgreSQLDockerに接続できません

分類Dev

Firebaseに接続しているherokuアプリケーションを開くことができません

分類Dev

Shiny サーバーは、光沢のあるアプリケーションへの接続を開くことができません

分類Dev

リモートデバッガーをEclipseOSGiアプリケーションに接続できません

分類Dev

DockerはアプリケーションをMySQLに接続できません

分類Dev

アプリケーションからIMSapnに接続できません

分類Dev

エラーのため、golangアプリケーションの詳細をデバッグできません:pid XXXに接続できませんでした:デバッグ情報を開くことができませんでした

分類Dev

Nodejsアプリケーションdockerがmongodbdockerコンテナーに接続できません

分類Dev

サーバーのURLからWebアプリケーションを開くことができません

分類Dev

Jconsoleがローカルjmxアプリケーションに接続できません

分類Dev

アプリケーションがDigitalOceanドロップレットのmongodbに接続できません

分類Dev

アプリケーションを起動できません-Xへの接続を開くことができません

分類Dev

Pgadmin4エラー:アプリケーションサーバーに接続できませんでした

分類Dev

アプリケーションから接続できません

分類Dev

LinuxVM内のDockerがWebアプリケーションに接続できません

分類Dev

サンプルWebアプリケーションプロジェクトでDartエディターの実行エラー「パブサーブを開始できませんでした。またはパブに接続できませんでした」

分類Dev

JSP Webアプリケーションのデータベース接続がロードできません

分類Dev

VSCodeアプリケーションが開きません

分類Dev

.NETアプリケーションからプッシャーに接続できません

分類Dev

JavaアプリケーションでSQLServerデータベースに接続できません

分類Dev

カスタムアプリケーションにリモートで接続できません

分類Dev

SpringアプリケーションをMysqlデータベースに接続できません

Related 関連記事

  1. 1

    Elastic Beanstalkアプリケーションはデータベースに接続できませんが、サーバーは接続できます

  2. 2

    QtアプリケーションでXサーバー:0.0に接続できません

  3. 3

    pgadmin4:postgresqlアプリケーションサーバーに接続できませんでした。

  4. 4

    pgadmin4:postgresqlアプリケーションサーバーに接続できませんでした。

  5. 5

    pgadmin4:postgresqlアプリケーションサーバーに接続できませんでした。

  6. 6

    pgAdmin4-postgresqlアプリケーションサーバーに接続できませんでした

  7. 7

    サーバーアプリケーションからmongodbをsslに接続できません

  8. 8

    PythonアプリケーションがPostgreSQLDockerに接続できません

  9. 9

    Firebaseに接続しているherokuアプリケーションを開くことができません

  10. 10

    Shiny サーバーは、光沢のあるアプリケーションへの接続を開くことができません

  11. 11

    リモートデバッガーをEclipseOSGiアプリケーションに接続できません

  12. 12

    DockerはアプリケーションをMySQLに接続できません

  13. 13

    アプリケーションからIMSapnに接続できません

  14. 14

    エラーのため、golangアプリケーションの詳細をデバッグできません:pid XXXに接続できませんでした:デバッグ情報を開くことができませんでした

  15. 15

    Nodejsアプリケーションdockerがmongodbdockerコンテナーに接続できません

  16. 16

    サーバーのURLからWebアプリケーションを開くことができません

  17. 17

    Jconsoleがローカルjmxアプリケーションに接続できません

  18. 18

    アプリケーションがDigitalOceanドロップレットのmongodbに接続できません

  19. 19

    アプリケーションを起動できません-Xへの接続を開くことができません

  20. 20

    Pgadmin4エラー:アプリケーションサーバーに接続できませんでした

  21. 21

    アプリケーションから接続できません

  22. 22

    LinuxVM内のDockerがWebアプリケーションに接続できません

  23. 23

    サンプルWebアプリケーションプロジェクトでDartエディターの実行エラー「パブサーブを開始できませんでした。またはパブに接続できませんでした」

  24. 24

    JSP Webアプリケーションのデータベース接続がロードできません

  25. 25

    VSCodeアプリケーションが開きません

  26. 26

    .NETアプリケーションからプッシャーに接続できません

  27. 27

    JavaアプリケーションでSQLServerデータベースに接続できません

  28. 28

    カスタムアプリケーションにリモートで接続できません

  29. 29

    SpringアプリケーションをMysqlデータベースに接続できません

ホットタグ

アーカイブ