質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

3回答

1214閲覧

【質問】.NETアプリケーションでの標準出力について

appdev

総合スコア16

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

1クリップ

投稿2018/05/19 19:20

現在、WPFアプリケーションの開発を行っています。
内部処理でLinuxとのssh通信をしており、その処理がユーザーから見える方法について検討しております。

以下のパターンは試してみました。
1.ListBox等に処理結果を出力していく
2.AllocConsoleを利用して標準出力に送り結果を出力していく

Linux側で動作しているアプリの影響により、C#で結果を行単位で取得することが出来ず、
1バイト単位で取得しもうメッセージがない判定を待機時間で強制的に終了しています。

そのためレスポンスが悪く見えるため、2の方法がUX的に良さそうですが、
例えば、表示したコンソール画面を前面に表示させたり、閉じたりさせるのも一苦労な印象があります。
この辺りが柔軟性が無い様に感じるため他の方法も検討した方が良いのか悩んでいます。

何か別の手段をご存知の方がいたらご協力お願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

自己解決

たまたま発見したのですが、ログファイルをPowerShellのGet-Contentで監視することで解決出来そうなことがわかりました。
同様の発想で別プロセスでコンソールアプリを作成しファイル監視をすればある程度の柔軟性を持てそうな気がします。
相談に乗って下さりありがとうございます。

投稿2020/06/07 00:38

appdev

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

昔々、どこかでテキストを変化させながら表示する場合最速はウィンドウタイトルだと見た記憶がありますね

現在でも当てはまるのか等は調査が必要ですが

投稿2018/05/20 01:26

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

appdev

2018/05/20 04:38

ご回答ありがとうございます。 ウィンドウタイトルとはウィンドウのヘッダにタイトルバーと同義と思っていますが合っていますか?
guest

0

ListBoxに表示するにしても、1バイト受信ごとに行データを表示更新していけばレスポンスが悪くはならないですが、
そもそもタイムアウトでメッセージの終了を判定するという設計がまずいですねー

投稿2018/05/20 00:17

y_waiwai

総合スコア87747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

appdev

2018/05/20 04:34

ご回答ありがとうございます。 元々クライアントサイドはTeraTarmのようなターミナルエミュレータで操作していたので、 メッセージの終了を意識しなくても問題無い様なのです…また、アプリケーションの改修は今のところ出来ない状態です。 C#で同様な方式が見つけられなかったので無理やりマルチスレッドで監視するようにしていますが… プログラム側で応答結果から処理を分岐したりしたいので、 結果を待たないといけなくなる感じになってしまいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問