winsorkでデータを保持するには


ささ  2005-01-26 17:02:53  No: 119196  IP: [192.*.*.*]

Winsorkであるデータが送られてきて
処理をしている最中に
データが数回送られてきた時
そのデータの2回分は、
処理後続けて処理されるのですが
その他のデータは、消えてしまいます
データを保持する方法
ないでしょうか?
環境は、VB6.0SP6  WIN2000  です

編集 削除
030  2005-01-26 18:20:54  No: 119197  IP: [192.*.*.*]

「消えてしまいます」ではなくて「消している」んですよ。
あなたが作成したデータ取得処理の不具合です。
もう一度、設計を考え直してください。

どんな風に作ったか分からないので指摘のしようもありません。

編集 削除
ささ  2005-01-27 09:17:01  No: 119198  IP: [192.*.*.*]

Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)

処理1(リモートIPとGETDATAのデータを使う)

IF 条件  then 処理2(リモートIPとGETDATAのデータを使う)

End Sub

Winsock_DataArrivalでアクション受けて処理をします
しかし、処理2の処理時間に約2分かかるときが有り
その間に来たデータを保持したいのですが
例えば、処理2の間に20回データが送られてきた時など

編集 削除
ねろ  2005-01-27 10:26:24  No: 119199  IP: [192.*.*.*]

やり方は色々あるけれどDataArrivalの中で
    Do
        Winsock1.GetData str
        '処理
    Loop While str <> ""
こんなか
    Do
        Winsock1.GetData str
        If str = "" Then
            Exit Do
        End If
        '処理
    Loop
こんなことをしたらいかがですか。

編集 削除
 2005-01-27 11:35:53  No: 119200  IP: [192.*.*.*]

ねろさん返信有難うございます
'処理
の処理中に
Sendされるデータが
数回来ます
'処理の処理時間が長い(約2分)
その間に(次に)
str = ""やWinsock1.BytesReceived=O  
になってしまいます

編集 削除
 2005-01-27 12:09:12  No: 119201  IP: [192.*.*.*]

確認ですが
>str = ""やWinsock1.BytesReceived=O  
になる前にWinsockのエラーイベントは発生していますか?

編集 削除
ささ  2005-01-27 13:43:16  No: 119202  IP: [192.*.*.*]

10060  
"タイムアウトのため接続できませんでした"
と出ています

編集 削除
ねろ  2005-01-27 14:39:22  No: 119203  IP: [192.*.*.*]

その送られて来るデーターは大きいものですか?
それと、2分かかる処理の中に少なくても1秒に1回位 
DoEventsは入れることが可能ですか?

編集 削除
ささ  2005-01-27 16:24:32  No: 119204  IP: [192.*.*.*]

2分かかる処理は、
EXCELにデータを貼り付ける処理です
DoEvents
が効くのでしょうか?

編集 削除
 2005-01-27 16:34:02  No: 119205  IP: [192.*.*.*]

テストで単純にListenを開始してData_Arrivalの中で無限ループになる
ようなものを作ってみましたが、タイムアウトのエラーはでませんね。
そのエラーが再現する最小限のコードは提示できますか?


時間がかかるのが問題であれば、通信専用のアプリケーションと
エクセルにデータを貼り付けるアプリケーションを別々に作っておいて
通信専用アプリケーションはデータを受信したらファイルに書き出すなり
共有メモリに書き出すだけにしておき、もう一方のアプリケーションで
データが蓄積されたらエクセルに書き込こむという作りにしたらどうでしょう。

編集 削除
ねろ  2005-01-27 17:23:51  No: 119206  IP: [192.*.*.*]

データーを始めに全部受け取ってから、
EXCELにデータを貼り付けるのでは、いけないんですか?

編集 削除
特攻隊長まるるう  2005-01-27 17:33:10  No: 119207  IP: [192.*.*.*]

質問と直接関係無いですが、
>2分かかる処理は、
>EXCELにデータを貼り付ける処理です
↓過去ログ検索『Resize』で引っ掛かります。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200408/04080085.txt
既に使っておられる、もしくは応用できないデータの
形・状況であればゴメンナサイ。

…仕事で帳票作成とかデータ貼り付けてグラフ表示とか
やってるけど、2分も掛かった記憶が無いので…そっち
で改良できそうな部分がある場合は別スレッド立てて
下されば答えます。

編集 削除
ささ  2005-01-28 13:44:41  No: 119208  IP: [192.*.*.*]

特攻隊長まるるう さん
有難うございました
>2分かかる処理は、
>EXCELにデータを貼り付ける処理です
一秒ですむようになりました

あと  Winsock_DataArrivalの方確認してみます

編集 削除
ささ  2005-01-28 16:15:37  No: 119209  IP: [192.*.*.*]

EXCELにデータを貼り付ける処理です
一秒ですむようになり
"タイムアウトのため接続できませんでした"
のエラーはでなくなりましたが

1回分の保持はできるのですが
2回に移る時には、
str = ""やWinsock1.BytesReceived=Oになってします
処理中に来たデータは、一回分しか保持できないのでしょうか?

編集 削除