プログラミングに関してなにかヒントがあればご教授いただきたく投稿しました。
VB.net2008 Framework2.0向けで作成中のアプリです。
上記アプリはフォームの中で無線の受信を口を開けて待っています。
→LOOPの中のある関数で受信するまで待機しています。
そこに VB6の他アプリから「SendMessage HWND_BROADCAST・・・・」をやられると
両方のアプリがハングアップ(フリーズ?)してしまいます。
BROADCASTは全てのウィンドウにメッセージを送ることはわかったのですが
これを回避する方法が見つかりません。
何卒ご教授の程よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
ん? 質問変えた? さっき似たような質問があって、その時に回答しようとしたら質問が消されたので書き込めなかったが、SendMessageで送ったメッセージはAcceptTcpClient()では受け取れないですよ。
なぜWin32 API(on VB6)でブロードキャストしたメッセージをTCPで受け取ろうと思ったんだ? その辺を説明しないと回答は得られんぞなもし。
無線の受信というのもよく意味が分からない。
正直QAサイトで扱える範疇ではないと思うので、いくつか要点を絞ってアドバイス。
送った側のVB6も固まるというのが気になるところではあるが・・・・。
・AcceptTcpClient()をするのはフォームとは別スレッドにしないといけない。さらに得られたTcpClientとやりとりをするのはそれとも別スレッドにすべき。
・SendMessageで発信されたメッセージを.Net側で受け取るのは「WndProc」で情報を集めてくれ。こちらは別スレッドを作る必要はない。
anmochi様
質問変えました。大変申し訳ない次第です。
スレッドあたりの構築をやり直します。
大変わかりやすいご説明を頂きましてありがとうございます。
No.2
- 回答日時:
No1のお礼に対して
事前に断わっておきますが私は基本的にVB触ったこと殆どありませんので
具体的なコードなどの提示はしません
ソース見ると作ってるのはサーバプログラムで
クライアントからの接続待ちでループしてるってことだと思いますが
それをどこかのイベントでコールしてるでしょ
根本的な作りが悪い
ブロッキングモードで作ってるようですが
・ノンブロッキングモードに変更する
・スレッド化してスレッドで実行する
どちらかの対処をしてください
それで治ると思います
No.1
- 回答日時:
具体的なコードがないので何とも言えないところもありますが
> →LOOPの中のある関数で受信するまで待機
ここで他のメッセージループが止まっていて処理できなくてハングする
といったことではないかという気がします
試にそのループ処理とやらを動かない状態で動作させたらどうなりますか
>VB6の他アプリ
これはあなたが作った別のアプリってことですか?
この回答への補足
koi1234様
回答ありがとうございます。
>> →LOOPの中のある関数で受信するまで待機
>ここで他のメッセージループが止まっていて処理できなく>てハングする
>といったことではないかという気がします
>試にそのループ処理とやらを動かない状態で動作させたら>どうなりますか
その通りで、Loopの中で待機しているので
LOOPを回避すればハングアップはしません
While True
Dim myTcpClient As New Sockets.TcpClient
myTcpClient=myListener.AcceptTcpClient()←ここで待機
Loop
>VB6の他アプリ
これはあなたが作った別のアプリってことですか?
→いえ 他人のアプリでソースは公開されていますが、改修はできないので.net側でどうにかするしかないのです。
何か分りますか? どうか引き続きよろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(パソコン・スマホ・電化製品) ウィルスバスターモバイルについて。 iphone12 miniで、ウィルスバスターモバイルを使ってい 2 2022/07/10 12:59
- Android(アンドロイド) Android13でアプリがフリーズすると「○○が応答していません。」がしつこいです。 アプリ一時的 2 2023/06/04 19:31
- その他(メールソフト・メールサービス) LINE無既読アプリについて 1 2023/03/16 10:12
- Android(アンドロイド) Androidってなぜ画像や動画のダウンロードがマトモにされない、出来ない、時々ダウンロードに失敗す 5 2022/08/05 23:22
- LINE LINEのスマホ機種変更時の移行失敗の復旧 1 2022/06/20 14:52
- Android(アンドロイド) Xperia10IVが良くないのですが?! まじでこのスマホ使い辛いです。 バックグラウンドのタスク 3 2023/06/07 22:24
- アプリ 某クラウドソーシングサービスの請負契約のキャンセル後に請求された遅延損害金 1 2022/04/08 00:29
- タブレット ipadairがフリーズする 2 2023/03/25 18:30
- ライフスタイル・ヘルスケア メールアプリについて教えて下さい。 次の機能が全て揃ってるものを探しています。出来れば無料アプリが嬉 1 2022/06/09 13:27
- アプリ 著作権に関する質問です 3 2023/02/11 10:31
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
_beginthreadexで生成したスレ...
-
LinuxでDoEvents()同等機能
-
volatile の使い方
-
マルチスレッドについて
-
クラス内でのpthread_createに...
-
複数スレッドを動作させるのに...
-
スレッドの終了の仕方
-
WaitForSingleObjectの使い方に...
-
VC++スレッドの正しい終了のさ...
-
pthread_attr_tへの値の代入に...
-
msec単位のWait Timerが作れない!
-
別スレッドとイベントの終了手...
-
スレッドにて同一メモリの書き...
-
.NetのBackgroundWorkerクラス...
-
スレッドの終了はどうやるんで...
-
スレッドの安全な終了のさせ方
-
VB2005 シリアル通信のClose処理
-
Macターミナルで実行中のプログ...
-
緯度、経度の 10進法と 60進法...
-
explorer.exeが異様にメモリを食う
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
WaitForSingleObjectの使い方に...
-
スレッドにて同一メモリの書き...
-
VC++スレッドの正しい終了のさ...
-
スレッドの監視方法について
-
Windows上で、シグナル(SIGTERM...
-
スレッドの終了の仕方
-
スレッドの安全な終了のさせ方
-
CWnd::OnTimerのスレッドの取得
-
MFC通信プログラムマルチスレッ...
-
Linuxでスレッド優先度って変え...
-
.netアプリへのSendMessageでフ...
-
VB2005 シリアル通信のClose処理
-
スレッドの終了はどうやるんで...
-
別スレッドからメインダイアロ...
-
マルチスレッドについて
-
マルチスレッドプログラミング...
-
別スレッドのデータを受信できない
-
特定のスレッドの破棄
-
.NetのBackgroundWorkerクラス...
-
msec単位のWait Timerが作れない!
おすすめ情報