C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■6782  非同期TCP接続
□投稿者/ JJ -(2007/08/23(Thu) 19:02:01)

    分類:[C#] 

    C# 2005 Express(Framework2.0)で開発しています。
    宜しくお願いします。

    Tcpで通信するアプリを開発中です。
    System.Net.TcpClientの同期式の接続だと
    Serverの電源OFFの場合に
    20秒程度待たされます。

    そこで、非同期接続を使いタイムアウトを
    加味して接続するClassを作成しました。

    WaitOneでタイムアウト時に何もしないと
    その後ConnectCallBackが走るため
    タイムアウトでCloseをやってみました。

    特に問題はないと思ってるのですが、
    ご意見ありましたら、お願いします。


    public class TcpConnect {
    /// <summary>
    /// 接続待ちEvent
    /// </summary>
    private ManualResetEvent _evConnect = new ManualResetEvent(false);

    /// <summary>
    /// 非同期接続処理のException
    /// </summary>
    private Exception _connEx;

    /// <summary>
    /// 指定先に接続したTcpClient クラスを返す(タイムアウト機能付)
    /// </summary>
    /// <param name="host">DNSマシン名orIPアドレス</param>
    /// <param name="portNo">ポート番号</param>
    /// <param name="timeoutMSec">タイムアウト[mSec]</param>
    /// <returns></returns>
    public TcpClient Connect(string host, int portNo, int timeoutMSec) {

    lock (this) {
    _evConnect.Reset();
    _connEx = null;

    TcpClient tc = new TcpClient();
    tc.BeginConnect(host, portNo, new AsyncCallback(ConnectCallBack), tc);

    if (_evConnect.WaitOne(timeoutMSec, false)) {
    if (_connEx == null) {
    return tc;
    } else {
    throw _connEx;
    }
    } else {
    // ConnectCallBackを発生させる
    // (TcpClient.Clientがnullで発生する)
    tc.Close();

    // タイムアウト通知
    throw new TimeoutException("Tcp Connect Timeout");
    }
    }
    }

    /// <summary>
    /// TcpClient.BeginConnect の CallBack
    /// </summary>
    /// <param name="ar"></param>
    private void ConnectCallBack(IAsyncResult ar) {

    try {
    TcpClient client = ar.AsyncState as TcpClient;
    if (client.Client != null) {
    client.EndConnect(ar);
    } else {
    // BeginConnect中にTcpClient.Close
    // を呼んだことにより発生
    // 無視する
    }
    } catch (Exception ex) {
    _connEx = ex;
    } finally {
    _evConnect.Set();
    }
    }
    }
親記事 /過去ログ17より / 関連記事表示
削除チェック/

■11307  Re[6]: ★1月東京、2月大阪、東京勉強会検討会
□投稿者/ 中博俊 -(2007/12/12(Wed) 00:44:23)
>
    うめました〜〜〜
記事No.11251 のレス /過去ログ26より / 関連記事表示
削除チェック/

■21374  Re[3]: 命名規則やモジュール構成
□投稿者/ やじゅ -(2008/07/01(Tue) 13:51:03)
>
    > ■No21367 (オガシン さん) に返信
    >
    > 今でも皆さんはハンガリアン記法を使っていますか?

    あえて、解決済みを外します。

    システムハンガリアン記法は、.NET Framework では使われていないです。
    GUI系コントロールには接頭辞を付けている方は多い?と思います。

    名前に関するガイドライン
    http://msdn.microsoft.com/ja-jp/library/ms229002(VS.80).aspx
    ハンガリアン記法 (ハンガリー記法)
    http://blogs.wankuma.com/jeanne/archive/2005/05/23/12306.aspx

    > モジュール構成は画面(機能)ごとにexeファイルをつくっていますか?
    > OOP的に階層を設けて1個のexeで他はライブラリにしてしまうほうが良いきがします。
    >

    私の今のプロジェクトのモジュール構成では、メニュー以外は、1画面(機能)ごとに
    DLLファイルです。(1画面にサブ画面を要しているところは纏めてますけど)

    規模によりますが、サブシステムごとEXEとかにて他はDLLにするのがいいのかなーと
    思ってます。
記事No.21355 のレス /過去ログ41より / 関連記事表示
削除チェック/

■27432  PrintDocumentno
□投稿者/ やすし -(2008/11/05(Wed) 18:50:33)

    分類:[.NET 全般] 

    開発環境:WindowsXp
    開発言語:VB.Net

    PrintDocumentの印刷処理について質問があります。

    PrintDocument.Print()で、印刷処理が実行されますが、
    印刷中に「Document 1ページ・・・」というメッセージが記述されていて
    「キャンセル」ボタンがついているキャンセルダイアログが表示されます。

    このダイアログの下記制御(2点)を行いたいのですが、その設定方法をご教授下さい。

    1、ダイアログの表示位置を一定にする。(現状、少しづつ移動する。)
    2、ダイアログに印刷ページを独自に表示させる。
      100ページ分の印刷であれば、1,2,3,4・・・100と印刷が実行されるごとに表示させたい。

親記事 /過去ログ50より / 関連記事表示
削除チェック/

■63239  Re[1]: フルパスからファイル名の一部を使用してのソート
□投稿者/ shu -(2012/08/08(Wed) 10:04:23)
    No63235 (SAQ さん) に返信
    
    正規表現を使ったほうが楽でしょう。
    使わなくても独自に文字列解析をすれば可能です。
    以下正規表現を使ったサンプルです。
    
    
    Imports System.Text.RegularExpressions
    
    Public Class Form1
        Private Class CompSorter
            Implements IComparer(Of String)
    
            Private FilePat As Regex
    
            Public Sub New()
                FilePat = New Regex("(?<Alp>.+?)-(?<Num>\d+)_Ver(?<Ver>\d+)\.txt")
            End Sub
    
            Public Function Compare(x As String, y As String) As Integer Implements System.Collections.Generic.IComparer(Of String).Compare
                Dim FileX As New IO.FileInfo(x)
                Dim FileY As New IO.FileInfo(y)
                Dim xm = FilePat.Match(FileX.Name)
                Dim ym = FilePat.Match(FileY.Name)
                Compare = 0
                If xm.Success AndAlso ym.Success Then
                    Dim AlpX = xm.Groups("Alp").Value
                    Dim AlpY = ym.Groups("Alp").Value
                    Dim NumX = CInt(xm.Groups("Num").Value)
                    Dim NumY = CInt(ym.Groups("Num").Value)
                    Dim VerX = CInt(xm.Groups("Ver").Value)
                    Dim VerY = CInt(ym.Groups("Ver").Value)
    
                    Dim ret = NumX.CompareTo(NumY)
                    If ret = 0 Then
                        ret = VerX.CompareTo(VerY)
                    End If
                    If ret = 0 Then
                        ret = String.Compare(AlpX, AlpY)
                    End If
                    Return ret
                ElseIf xm.Success Then
                    Return 1
                ElseIf ym.Success Then
                    Return -1
                End If
            End Function
        End Class
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim FileNames() As String = New String() { _
                                            "C:\Folder_01\AA-001_Ver2.txt",
                                            "C:\Folder_02\CC-002_Ver1.txt",
                                            "C:\Folder_03\CC-003_Ver3.txt",
                                            "C:\Folder_04\BB-002_Ver1.txt",
                                            "C:\Folder_05\AA-001_Ver1.txt"
                                        }
            Dim Sorter As New CompSorter
    
            Array.Sort(FileNames, Sorter)
        End Sub
    End Class
    
記事No.63235 のレス /過去ログ106より / 関連記事表示
削除チェック/

■69406  Re[3]: Oracle Select文
□投稿者/ a -(2013/12/24(Tue) 14:43:11)
    No69405 (MassyPie さん) に返信
    > <aさん>
    >
    > コメントありがとうございます。
    > シンプルにすると、↓のようになり、'2013/12/15 20:10:20' より大きく'2013/12/20 20:10:20'以下のデータが取れています。
    > ('2013/12/15 20:10:20' < timestamp) and (timestamp <= '2013/12/20 20:10:20')
    >
    すみません。
    意図は理解できていたはずですが、なんか勘違いしてたみたいです。
    お騒がせしました。m(_._)m
記事No.69379 のレス / END /過去ログ118より / 関連記事表示
削除チェック/

■87863  Re[4]: カスタムコントロールに関する質問
□投稿者/ www -(2018/07/08(Sun) 13:43:06)
    ありがとうございます。

    ちなみに


    Public Property Type As CustomType


    のようにして明示的に書かなかった場合
    デフォルト値はどのようにして記述すれば良いですか?
記事No.87857 のレス /過去ログ151より / 関連記事表示
削除チェック/

■87866  Re[5]: カスタムコントロールに関する質問
□投稿者/ WebSurfer -(2018/07/08(Sun) 14:57:16)
    No87863 (www さん) に返信

    すでに答えは調べて分かったようですので今さらながらのレスですが・・・

    > デフォルト値はどのようにして記述すれば良いですか?

    以下の記事が参考になると思います。

    連載! とことん VB: 第 13 回 自動実装プロパティの役割と、そこから読み取れるプロパティの用途
    https://code.msdn.microsoft.com/windowsdesktop/13-4ee47d39

    他にも、「vb.net」「自動実装プロパティ」などをキーワードにググるといろいろヒットしますので
    ご自分でもやってみてください。
記事No.87857 のレス /過去ログ151より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -