5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

ふらっとC#,C♯,C#(初心者用) Part57

1 :デフォルトの名無しさん:2010/03/20(土) 02:15:38
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

ふらっとC#,C♯,C#(初心者用) Part56
http://pc12.2ch.net/test/read.cgi/tech/1267348401/


関連スレ
C#, C♯, C#相談室 Part55(実質56)
http://pc12.2ch.net/test/read.cgi/tech/1260111240/1

VB.NET質問スレ(Part33)
http://pc12.2ch.net/test/read.cgi/tech/1263738929/1

C++/CLI part3
http://pc12.2ch.net/test/read.cgi/tech/1206447234/1

2 :デフォルトの名無しさん:2010/03/20(土) 02:20:14
コードの量が多い場合は下記サイトを使うなどしたほうがいいかも

http://codepad.org/

コードを貼り付けてRun codeのチェックをはずしてsubmitボタンを押すと
コードを鯖側にアップして専用のアドレスが発行されます。

3 :デフォルトの名無しさん:2010/03/20(土) 10:36:08
OrderedDictionary

4 :デフォルトの名無しさん:2010/03/20(土) 17:31:58
>>1
関連スレの更新忘れ

C#, C♯, C#相談室 Part55 (実質57)
http://pc12.2ch.net/test/read.cgi/tech/1265283175/

紛らわしい。いつになったら正しいスレ番になるのかと

5 :デフォルトの名無しさん:2010/03/20(土) 17:46:26
メンバ変数の値が変更されたらイベント処理をするようなのをしてみたい
TextChangedイベントみたいな感じ

6 :デフォルトの名無しさん:2010/03/20(土) 17:59:35
.....というチラ裏?

7 :デフォルトの名無しさん:2010/03/20(土) 18:04:01
してみたいのでさせてください

8 :デフォルトの名無しさん:2010/03/20(土) 18:06:17
どうぞ

9 :デフォルトの名無しさん:2010/03/20(土) 18:09:43
デリゲート、マルチスレッド、イベント
ごちゃごちゃになってどれ使えばできるのかよくわかりません
教えて

10 :デフォルトの名無しさん:2010/03/20(土) 18:12:30
いいよ

11 :デフォルトの名無しさん:2010/03/20(土) 18:16:47
イベントとデリゲートの関係は、イベントを宣言するときに簡略記法使わずに
addアクセサとremoveアクセサを自分で実装してみるとよく理解できる

12 :デフォルトの名無しさん:2010/03/20(土) 18:21:33
>>11
イベントは呼び出し側は追加と削除しかできない
そういう違いはだいたいわかったんだけど
いざ応用しようとするとまったくわからない

ある変数の値をフォームに表示するために
値が変更されると値を表示するメソッドを毎回書いていたんですけど
もしかしたら、TextChangedのようにデリゲートを使えば
わざわざ表示メソッドを毎回書かなくてもいいんじゃないかと気づいて
調べていたんですが、むじゅかしくて・・・

13 :デフォルトの名無しさん:2010/03/20(土) 18:26:45
そういうのはINotifyPropertyChangedを実装してバインドしてしまえば更新処理不要

14 :デフォルトの名無しさん:2010/03/20(土) 18:47:33
レベルが高すぎて理解できません

15 :デフォルトの名無しさん:2010/03/20(土) 18:51:43
あきらめろよ。

16 :デフォルトの名無しさん:2010/03/20(土) 19:14:08
>>12
普通にプロパティじゃだめなの?

17 :デフォルトの名無しさん:2010/03/20(土) 19:19:36
>>16
そういえばプロパティで出来そうですね
でもプロパティをそういうふうに使ってもいいんですか?
それとクラス内部で使うだけの変数なので
プロパティをするというのも違うような
やはりイベントだと思うんですよ

18 :デフォルトの名無しさん:2010/03/20(土) 19:21:00
イベントを使うにしても結局プロパティで地道にチェックしてイベント発生させるんだよ

19 :デフォルトの名無しさん:2010/03/20(土) 19:41:12
イベントでそれっぽいの実現してるソースみたけど
結局別のクラスのプロパティでメソッド呼び出して
メインクラスのイベントハンドラ呼び出しているだけですね

ってことはプロパティにそのまま書けばいいだけか・・・

20 :デフォルトの名無しさん:2010/03/20(土) 19:45:16
しかし、>>9のレスにマルチスレッドが出ているのは不思議だと思った。
他の二つはわかるけど

21 :デフォルトの名無しさん:2010/03/20(土) 19:46:01
>>19
あまり良い設計じゃないな

22 :デフォルトの名無しさん:2010/03/20(土) 19:49:15
イベントとデリゲートってどんな関係があるの?

23 :デフォルトの名無しさん:2010/03/20(土) 19:50:09
デリゲート経由でイベント呼び出しなんじゃね?

24 :デフォルトの名無しさん:2010/03/20(土) 19:52:04
windowsのイベントってOSが呼び出しする物なので非同期
クリックされたとかイベントが起きたときに特定の関数を呼んでもらった方が効率がいい

呼んでもらいたい関数を教える際に使うのがデリゲート
Cだとコールバックとか言ってた

25 :デフォルトの名無しさん:2010/03/20(土) 19:52:58
イベントは
・イベントハンドラを登録するメソッド
・イベントハンドラを削除するメソッド
をひとまとめにしたもの。プロパティみたいなもん。
addとremoveを省略してevent EventHandler Hoge; の形式で宣言する場合は
自動実装プロパティと同じでデリゲートやメソッドが自動生成される。

26 :デフォルトの名無しさん:2010/03/20(土) 19:54:48
まあ別にしらなくてもぷろぐらむは作れるからいいか

27 :デフォルトの名無しさん:2010/03/20(土) 19:55:23
デリゲートの説明で一番わかりやすかったのが

デリゲートはメソッドをオブジェクトのように使うもの

そう考えるとすごくわかりやすかった
でも、クラス使えばできることをなぜわざわざするのかというと
やっぱり、マルチスレッドかイベントぐらいしか使い道ないような感じ

28 :デフォルトの名無しさん:2010/03/20(土) 20:00:29
>>27
はじめは>マルチスレッドかイベントぐらいしか使い道ない と想定されてたから
マルチキャストとか変なところがあるけど最近はラムダ式などで積極的に活用されてる

29 :デフォルトの名無しさん:2010/03/20(土) 20:02:38
ひょっとしてサブスレッドからメインスレッドに処理の終了を
知らせることができるのか!!

30 :デフォルトの名無しさん:2010/03/20(土) 20:02:50
>はじめは>マルチスレッドかイベントぐらいしか使い道ない と想定されてたから
だから、前にも書いたがそれはない。
寝ぼけたことをどや顔で繰り返さないように。

31 :デフォルトの名無しさん:2010/03/20(土) 20:04:31
>>29
とりあえずバックグラウンドワーカーコントロールでも使ってこい

32 :デフォルトの名無しさん:2010/03/20(土) 20:08:05
俺も初心者だけど、このスレのレベルにワロタ

33 :デフォルトの名無しさん:2010/03/20(土) 20:11:29
>>31
使ってみた!すげーーー!

いつの間にこんなコントロールが!

34 :デフォルトの名無しさん:2010/03/20(土) 20:16:03
と思ったらわざとだろお前wwしらじらしいww

35 :デフォルトの名無しさん:2010/03/20(土) 20:17:52
わざとじゃねーよw
スレッド作ってメインスレッドからタイマーで見てたよw

36 :デフォルトの名無しさん:2010/03/20(土) 20:19:37
>>35
スレッドからスレッド名前空間のタイマ?
それって二重になってるんじゃ・・・・

37 :デフォルトの名無しさん:2010/03/20(土) 20:29:38
この間どっちかのスレでこんなのもあったな
http://codepad.org/akzX4pKs

38 :デフォルトの名無しさん:2010/03/20(土) 20:39:06
で、結局、変数の値が変更されたら
自動でform.Textの値を変更してくれるのは
どう書けばいいの?

39 :デフォルトの名無しさん:2010/03/20(土) 20:46:52
今まで出た感じで好きなように


40 :デフォルトの名無しさん:2010/03/20(土) 20:59:27
textboxだっけ?
あれって中身が変更された〜とかそんなイベントなかったっけ?
それで監視するしかないよね

41 :デフォルトの名無しさん:2010/03/20(土) 21:02:44
なんでもバインドしたけりゃWPFだな

42 :デフォルトの名無しさん:2010/03/20(土) 21:06:03
>>40
メンバ変数つってんだろ
textbox関係ないだろ

43 :デフォルトの名無しさん:2010/03/20(土) 21:08:56
そろそろ死ねよ。

44 :デフォルトの名無しさん:2010/03/20(土) 21:16:26
>>43
お前は寂しい人間だな
昨日から用もないのにこのスレに来ては煽るだけ
お前の人生が不幸だからって他人に八つ当たりするな

45 :デフォルトの名無しさん:2010/03/20(土) 21:23:09
やばい。できた
    public partial class Form1 : Form
    {
        int hoge = 0;
        int i = 0;
        public Form1()
        {
            InitializeComponent();
        }
        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            textBox1.Text = hoge.ToString();
        }
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            backgroundWorker1.ReportProgress(i++);
            System.Threading.Thread.Sleep(2000);
            hoge = 2;
            backgroundWorker1.ReportProgress(i++);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            backgroundWorker1.RunWorkerAsync();
        }
        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            backgroundWorker1.WorkerReportsProgress = true;
        }
    }

46 :デフォルトの名無しさん:2010/03/20(土) 21:24:50
>>45
>>2使えよw

47 :デフォルトの名無しさん:2010/03/20(土) 21:25:40
昨日は来てねーよ。
頭おかしいんじゃね?

48 :デフォルトの名無しさん:2010/03/20(土) 21:25:58
>>46
おぉ!
すげーーー!

49 :デフォルトの名無しさん:2010/03/20(土) 21:26:45
何がしたいんだよ。このコード。

50 :デフォルトの名無しさん:2010/03/20(土) 21:27:44
初めての非同期で感動するコードだろ


51 :デフォルトの名無しさん:2010/03/20(土) 21:27:46
素直にプロパティでチェックしてイベント発行するべき
わざわざスレッド使うとか初心者スレで間違ったやり方出すなよ

52 :デフォルトの名無しさん:2010/03/20(土) 21:30:26
初めてのマルチスレッドか。

今度は何か意味のあるコードで頼む。

53 :デフォルトの名無しさん:2010/03/20(土) 21:31:03
あれ? この場合、Invokeしないでいいの?

54 :デフォルトの名無しさん:2010/03/20(土) 21:31:04
>>37で十分だろ

55 :デフォルトの名無しさん:2010/03/20(土) 21:32:57
>>53
そういうの意識しなくていいから初心者にもやさしい


56 :デフォルトの名無しさん:2010/03/20(土) 21:33:14
素直なつくりにできないのって大概は仕様や設計が悪いんじゃないの?

57 :デフォルトの名無しさん:2010/03/20(土) 21:33:17
うん

58 :デフォルトの名無しさん:2010/03/20(土) 21:34:24
へー。使ったことなかったけど、BackgroundWorkerって便利なんだな。

59 :デフォルトの名無しさん:2010/03/20(土) 21:40:17
ああ間違えた
これテンプレにしとけ
毎度応えるの面倒

Form間のデータの受け渡しサンプルコード
http://codepad.org/akzX4pKs

スレッド、デリゲート関連のサンプルコード
http://codepad.org/xOdJsJie

Radiko
http://codepad.org/Vvwba6du

60 :デフォルトの名無しさん:2010/03/20(土) 21:42:51
>>58
まあな

61 :デフォルトの名無しさん:2010/03/20(土) 21:44:10
hogeを他で使うならlock大丈夫か

62 :デフォルトの名無しさん:2010/03/20(土) 21:45:44
>>38

63 :デフォルトの名無しさん:2010/03/20(土) 21:47:13
テンプレにはいらんだろ。

64 :デフォルトの名無しさん:2010/03/20(土) 21:53:47
>>62
変数の値が変わるのはサブスレッド側でわかるんだから
>>45でできるやん。
俺って天才かも。

65 :デフォルトの名無しさん:2010/03/20(土) 22:01:19
BackgroundWorkerなんか便利なものか。
スレッドがよく分かってない奴でもなんとなく使える、という以上のメリット(本当にメリットか?)
は何もないだろう

66 :デフォルトの名無しさん:2010/03/20(土) 22:03:25
超メリットだよ
ただ馬鹿に仕事取られるということでもあるけどなw

67 :デフォルトの名無しさん:2010/03/20(土) 22:05:20
>>65
時代遅れになっていくやつの典型的な反応だな

68 :デフォルトの名無しさん:2010/03/20(土) 22:07:40
アセンブラ厨と言ってることが変わらないよね

BackgroundWorkerをC#に、Threadをアセンブラに変えても成立してしまうw

69 :デフォルトの名無しさん:2010/03/20(土) 22:15:09
>>67
むしろ、言いたくないが君のようなのがいわゆる「VB厨」の典型的反応でしょ。
BackgroundWorkerって典型的な「VB厨」向けツールだよ。

彼らは言うんだよ。「便利なものは便利に使わせていただく」ってw
お前便利だから使ってるわけじゃなくて、それしか使えないんじゃねえの、って。

70 :デフォルトの名無しさん:2010/03/20(土) 22:16:05
>>69
はいはいパンチカードに穴あける作業に戻ってねオジーチャン

71 :デフォルトの名無しさん:2010/03/20(土) 22:17:39
C++やJavaでもマルチスレッドプログラミングしてたけど
BackgroundWorkerは便利だよ

72 :デフォルトの名無しさん:2010/03/20(土) 22:17:47
年寄りはおとなしくタイプライター叩いててくれ。

73 :デフォルトの名無しさん:2010/03/20(土) 22:18:55
普通に明示的にスレッド起動した方がよほど分かりやすい、
と標準的なプログラマなら感じると思うけどね俺は。

74 :デフォルトの名無しさん:2010/03/20(土) 22:19:45
結局お前が思ってるだけじゃん。
何が標準的(キリッだってのw

75 :デフォルトの名無しさん:2010/03/20(土) 22:20:17
この怒涛のレスの雨は久しぶりに見たぞwww

76 :デフォルトの名無しさん:2010/03/20(土) 22:20:20
伸びてると思ったら・・・・

77 :デフォルトの名無しさん:2010/03/20(土) 22:20:55
phpをdisってる人と同じ匂いがする

78 :デフォルトの名無しさん:2010/03/20(土) 22:22:00
>>69
VBが出た時、beginner's toyと言われていたけど、今や、どれもこれも真似してるよな
そういうハッカー気どってVB馬鹿にするのは、COMコンポーネントをCでストレスなく作れるようになってから言ってくれ

79 :デフォルトの名無しさん:2010/03/20(土) 22:22:56
わざわざ遠回りな方法をとるアテクシカコイイみたいな。

スレッド使いこなしてデキるプログラマ目指そう!
モテカワマルチスレッドの嗜み方教えちゃいます特集号

みたいな。

80 :デフォルトの名無しさん:2010/03/20(土) 22:23:59
>>78
VBを馬鹿にしてないって。
「VB厨」を馬鹿にしてるの。だからわざわざカギ括弧付けてるんじゃないの。

81 :デフォルトの名無しさん:2010/03/20(土) 22:24:11
おっさん調子乗ってんなよ^^

82 :デフォルトの名無しさん:2010/03/20(土) 22:25:41
とはいっても>>68を否定できないよねw

83 :デフォルトの名無しさん:2010/03/20(土) 22:25:48
BackgroundWorkerがいやならC#も嫌なはず

84 :デフォルトの名無しさん:2010/03/20(土) 22:26:48
>>80
じゃあさっさと>>62答えろよ

85 :デフォルトの名無しさん:2010/03/20(土) 22:28:12
>>64
お前はイベントとマルチスレッドの違いもわからないカス

86 :デフォルトの名無しさん:2010/03/20(土) 22:28:44
まあ御託はいいから、そんなにBackgroundWorkerが便利だと思うのなら
普通にスレッド起動した場合と比較したメリットをちゃんと言ってみろって。

言えやしないだろうそんなもの。
無い者を言えるわけがない。

さすがにいくら面の皮が厚い馬鹿でも「理屈が分かってない馬鹿なボキュにも使えることがメリット」とは
言いづらいもんねw

87 :デフォルトの名無しさん:2010/03/20(土) 22:29:21
まあまあ喧嘩しないしない
使いたいの使いなさい

それより仕事をしなさい

88 :デフォルトの名無しさん:2010/03/20(土) 22:30:24
>>86
早く>>68を否定してみろよ
否定できないならC#使うのやめて機械語に帰れ

89 :デフォルトの名無しさん:2010/03/20(土) 22:32:54
>>86
単にフレームとして一連の処理の流れが実装してあることがメリットだろう。
IListそのものがListより便利だとは言わないでしょ。
実装が無いんだから。

90 :デフォルトの名無しさん:2010/03/20(土) 22:34:04
>>86
理屈がわからなければを繰り返していくと、最後は量子力学か神学までいくから理屈がわかってないバカ議論は不毛
もう化石だな

91 :デフォルトの名無しさん:2010/03/20(土) 22:34:23
>>86
簡単に使える、ってのは大きなメリットだろ。

92 :デフォルトの名無しさん:2010/03/20(土) 22:35:03
>>86
馬鹿でも使えるのは超メリットだと初めに言ったはずだが
そこから否定されても困るね
何言ってんのお前

220 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)