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

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

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

全過去ログを検索

<< 0 >>
■68020  Re[5]: 「threadを使うか、processを使うかこれは問題だ」
□投稿者/ しま -(2013/09/16(Mon) 10:04:15)
    No68018 (ハムレット さん) に返信
    >
    > あえて、両者を比較したいです。
    > 例えば、
    > 1.両方ともアイドル状態(sleep)から起動するにはどっちがより早いでしょうか。

    プロセス、スレッドについてどうお考えなのでしょう?
    Azulean さんも書かれていますが、新規に作成するという意味ではややプロセスの方が時間がかかります。
    ただ、スレッドもかなり時間がかかるのでその差に意味があるかどうかは私には分かりません。
    スレッドも、プロセスも作成後は、記憶上にある場合は活動中ならOSが順番に切り替えますので
    非活動から活動に変更したとしても、割り当て期間が来るまで待たされます。
    ですからプロセスだから、スレッドより確実に時間がかかるということはできないと考えます。

    > 2. それから、処理データがない時、あるデータポートを絶えずチェックするような処理は相当CPU時間を費やすのでしょうか。
    >   つまり、他の並列処理に相当な影響を与えるのでしょうか。

    データーポートが何を指すのか不明ですが、記憶(メモリー)上の特定の領域か、
    二つのプロセスかスレッドで共通に読み書きできる何か(記憶領域、ファイルなど)だと仮定します。
    プロセスにも、スレッドにもOSは活動期間を割り当てます。普通、処理すべきものがない場合プロセスも
    スレッドも活動期間を譲ります(OSに返します)。そうしない場合、他のプロセスなどに影響するといえます。
    監視するから他のプロセスなどに影響するかどうかは気にしません(監視することが必要なら監視するしかないからです)。
    >
    > どうぞ 宜しくお願い致します。

    「どうぞ」は日本語の使い方として奇妙に感じるのは私だけ??
    *どうぞは何かすすめる場合
    *どうかは何かお願いする場合
    だと思っていた。
記事No.67990 のレス /過去ログ115より / 関連記事表示
削除チェック/

■73324  WebBrowserを使用したエディターでのコピペ動作
□投稿者/ タッチ -(2014/09/12(Fri) 12:35:34)

    分類:[VB.NET/VB2005 以降] 

    No73148 他でWebBrowserを使用したエディターについて質問したタッチと申します。
    (WebBrowserのDomDocument.designMode = "On"にしたWebBrowserを使用・開発言語:VB2008)

    さて、色々とこのエディターを試しているうちに、このエディター上でのコピペが
    出来なくなる場合があることが判明しました。

    色々と調べていくうちに、インターネットオプションのインターネットゾーンでのセキュリティ設定で
    「スクリプトによる貼り付け処理の許可」が無効になっている場合、コピペが動作しないことが判明しました。
    また、実際はWebBrowserShortcutsEnabledをFalseにして使いたいので、例えば以下のようなコマンドを
    利用しているのですが、これらも動作しません。

    WebBrowser1.Document.ExecCommand("Cut", False, Nothing)
    WebBrowser1.Document.ExecCommand("Paste", False, Nothing)

    この「スクリプトによる貼り付け処理の許可」の設定内容は、レジストリの以下の場所にあり、
    この1407という項目の値を書き換えればいいことまでは分かったのですが、
    アプリ側で勝手にこのレジストリを変更するのは問題ではないかと思っています。

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3
    (Zones内のサブキー"3"はインターネットゾーンを表す)

    ただ、このWebBrowserはあくまでもエディターとして使い、インターネットゾーンで使用するつもりはないので、
    このWebBrowserを使ったエディターに限って、「スクリプトによる貼り付け処理の許可」を有効にする方法、
    またはコピペが許可される方法はないでしょうか?

    どうぞよろしくお願いします。
親記事 /過去ログ123より / 関連記事表示
削除チェック/

■81401  Re[1]: C# 複数行のテキストの読み込み
□投稿者/ Jitta -(2016/09/16(Fri) 11:28:54)
    No81398 (あおいそら さん) に返信

    textbox.Text.Split(new string[] { "\r\n" }, ながいので略)
    で、行ごとに分割した文字列配列になります
記事No.81398 のレス /過去ログ138より / 関連記事表示
削除チェック/

■92934  Re[1]: Listの入れ子があるListをソースに設定する方法について
□投稿者/ 魔界の仮面弁士 -(2019/11/11(Mon) 10:40:06)
    No92931 (河童 さん) に返信
    > List<GroupInfo> GroupLst;
    DataGridView にバインドすることが目的ならば、
    List<T> ではなく
    BindingList<T> の方が良いでしょう。

    ただ、階層構造の移動通知を盛り込むことを考えると、
    型付 DataSet でリレーションを表現した方が手っ取り早いと思います。
    DataSet での表現例は No92929 を参考に。



    > グループ、チームとユーザは今後増えていきます。
    > チームは複数のグループには属しません。
    > ユーザは複数のチームには属しません。

    新しいユーザーを追加する場合、user_num が競合しないことを検査する必要がありますよね。

    DataSet なら、競合検査も同時に組み込んでおくことが出来ますが、独自管理するなら
    user_num を Key とする Dictionary<,> を用意しておいた方が検査しやすいかと。


    それと、ユーザーを他のチームに異動させる場合、どのように操作させる予定なのでしょうか?

    UI がまだ未決定なら、グループ/チーム/ユーザーを TreeView で表現して、
    ノードをドラッグ移動で操作可能にするのも面白いかも。

    num と name 以外にも情報が増えそうなら、 TreeListView な実装が
    Web 上で幾つか公開されているようです。
記事No.92931 のレス /過去ログ161より / 関連記事表示
削除チェック/

■92945  Re[2]: Listの入れ子があるListをソースに設定する方法について
□投稿者/ 河童 -(2019/11/11(Mon) 16:33:27)
    No92934 (魔界の仮面弁士 さん) に返信
    
    こんにちは。魔界の仮面弁士 さん、お返事ありがとうございます。
    
    わからないことが2点あります。
    
    1.リストの値をテーブルにセットする方法
    入れ子があるリストのグループリストからどのようにDataSetに値を設定させれば良いでしょうか?
    
    
    2.キーの設定方法について
    > グループ、チームとユーザは今後増えていきます。
    > チームは複数のグループには属しません。
    > ユーザは複数のチームには属しません。
    データを追加する必要が今後でてくるのですが、そのときのチームとユーザの番号を一意にするのではなく、
    同じ番号も使用したいと思っています。
    例えば、
    group_num team_num user_num 
    1         1        1
    1         1        2
    1         1        3
    2         1        1
    2         1        2
    3         1        1
    のようにgroup_num,team_num,user_numの3つをキーに設定したいです。
    tblGに3つのキーを設定すると、
    teamとuserがnullでエラーが発生します。
    
    新しいユーザを追加するときは、
    group_num,team_num,user_numで重複がなくuser_numの最大値を設定したいです。
    
    同様にチームを追加するときは、
    groupj_num,team_numuで重複がなくteam_numの最大値を設定したいです。
    
    
            private void FormMain_Load(object sender, EventArgs
            {
    
                #region 型付DataSetを使えば、この部分をデザイン時に作成しておくこともできる
                var tblG = ds.Tables.Add("Group");
                tblG.Columns.Add("group_num", typeof(int));
                tblG.Columns.Add("group_name");
                tblG.Columns.Add("team_num");
                tblG.Columns.Add("user_num");
                tblG.PrimaryKey = new DataColumn[] { tblG.Columns["group_num"] };
                //tblG.PrimaryKey = new DataColumn[] { tblG.Columns["group_num"], tblG.Columns["team_num"], tblG.Columns["user_num"] };
    
                var tblT = ds.Tables.Add("Team");
                tblT.Columns.Add("group_num", typeof(int));
                tblT.Columns.Add("team_num", typeof(int));
                tblT.Columns.Add("team_name");
                tblT.PrimaryKey = new DataColumn[] { tblT.Columns["group_num"], tblT.Columns["team_num"] };
    
                var tblU = ds.Tables.Add("User");
                tblU.Columns.Add("team_num", typeof(int));
                tblU.Columns.Add("user_num", typeof(int));
                tblU.Columns.Add("user_name");
                tblU.PrimaryKey = new DataColumn[] { tblU.Columns["team_num"], tblU.Columns["user_num"] };
    
                ds.Relations.Add("G_T", tblG.Columns["group_num"], tblT.Columns["group_num"]);
                ds.Relations.Add("T_U", tblT.Columns["team_num"], tblU.Columns["team_num"]);
    
                bindingSource1.DataSource = ds;
                bindingSource1.DataMember = "Group";
                bindingSource2.DataSource = bindingSource1;
                bindingSource2.DataMember = "G_T";
                bindingSource3.DataSource = bindingSource2;
                bindingSource3.DataMember = "T_U";
    
                dgvGroup.DataSource = bindingSource1;
                dgvTeam.DataSource = bindingSource2;
                dgvUser.DataSource = bindingSource3;
    
                dgvGroup.Columns["team_num"].Visible = false;
                dgvGroup.Columns["user_num"].Visible = false;
    
                dgvTeam.Columns["group_num"].Visible = false;
                dgvUser.Columns["team_num"].Visible = false;
                #endregion
    
    
                // リスト作成
                GroupLst = new List<GroupInfo>();
                GroupInfo d = new GroupInfo();
                d.group_num = 1;
                d.group_name = "GroupA";
                d.teamList = new List<TeamInfo>();
                TeamInfo t = new TeamInfo();
                t.team_num = 1;
                t.team_name = "TeamA";
                t.userList = new List<UserInfo>();
                UserInfo u = new UserInfo();
                u.user_num = 1;
                u.user_name = "User1";
                t.userList.Add(u);
                d.teamList.Add(t);
                GroupLst.Add(d);
    
                GroupInfo d2 = new GroupInfo();
                d2.group_num = 2;
                d2.group_name = "GroupB";
                d2.teamList = new List<TeamInfo>();
                TeamInfo t2 = new TeamInfo();
                t2.team_num = 2;
                t2.team_name = "TeamB";
                t2.userList = new List<UserInfo>();
                UserInfo u2 = new UserInfo();
                u2.user_num = 2;
                u2.user_name = "User2";
                t2.userList.Add(u2);
                d2.teamList.Add(t2);
                GroupLst.Add(d2);
    
                // 不明点1
                // グループリストからテーブルにどのように設定すれば良いでしょう
                
    
                // データを追加
                ds.Tables["Group"].Rows.Add(1, "GroupA");
                ds.Tables["Group"].Rows.Add(2, "GroupB");
                ds.Tables["Group"].Rows.Add(3, "GroupC");
                ds.Tables["Team"].Rows.Add(1, 1, "GA_TeamA");
                ds.Tables["Team"].Rows.Add(1, 2, "GA_TeamB");
                ds.Tables["Team"].Rows.Add(1, 3, "GA_TeamC");
                // 不明点2
                // チームやユーザが入れ替わることはないのですが、
                // チームとユーザの同じ番号を使いたいです。
                // チームのキーの設定はグループとチームの番号の2種類で
                // ユーザのキーの設定はグループとチームとユーザの番号の3種類で
                // group_numとteam_numの2つを主キーに設定
                //ds.Tables["Team"].Rows.Add(2, 1, "GB_TeamA");
                ds.Tables["Team"].Rows.Add(2, 4, "GB_TeamA");
    
                ds.Tables["User"].Rows.Add(1, 1, "User1");
                ds.Tables["User"].Rows.Add(1, 2, "User2");
                ds.Tables["User"].Rows.Add(2, 3, "User3");
                ds.Tables["User"].Rows.Add(2, 4, "User4");
                ds.Tables["User"].Rows.Add(3, 5, "User5");
                ds.AcceptChanges();
            }
記事No.92931 のレス /過去ログ161より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -