「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■関連スレ
C#, C♯, C#相談室 Part95
http://mevius.5ch.net/test/read.cgi/tech/1508180530/
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part135
http://mevius.5ch.net/test/read.cgi/tech/1517749348/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
-
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
探検
ふらっと C#,C♯,C#(初心者用) Part136
■ このスレッドは過去ログ倉庫に格納されています
2018/03/03(土) 15:09:05.75ID:SBEkwl3H
2018/03/03(土) 18:09:05.02ID:T0Do3u+2
>>1乙
放置してると落ちるんでね?
放置してると落ちるんでね?
2018/03/03(土) 19:55:41.98ID:kXsLgfSK
いちおつ!
4デフォルトの名無しさん
2018/03/04(日) 08:49:14.26ID:Jnf3+hM1 invokeの意味がよく分からない。
別のスレッドからUIのコントロールを触るには、手順が必要でそれをInvokeを通すとちゃんとやってくれる
ということらしい。
疑問1:手順を踏まないと駄目なのはFormに貼り付けたコントロールだけなのか?
これは「コントロールはスレッドセーフじゃない」と同義のことか?
疑問2:一般的なクラスやListデータはスレッドセーフなのか?
例えば、100kバイトの受信データが常時更新されているとする。これをメインスレッドにコピーするときに
半分程度コピーしたときに、次の受信割り込みでスレッドが切り替わって上書きされるなんてことは起きないのか?
スレッドの切り替えはOSが勝手にやるんだから、これは当然起きてしまいそうな気がするんだが、防ぐ手立ては
あるんか?
別のスレッドからUIのコントロールを触るには、手順が必要でそれをInvokeを通すとちゃんとやってくれる
ということらしい。
疑問1:手順を踏まないと駄目なのはFormに貼り付けたコントロールだけなのか?
これは「コントロールはスレッドセーフじゃない」と同義のことか?
疑問2:一般的なクラスやListデータはスレッドセーフなのか?
例えば、100kバイトの受信データが常時更新されているとする。これをメインスレッドにコピーするときに
半分程度コピーしたときに、次の受信割り込みでスレッドが切り替わって上書きされるなんてことは起きないのか?
スレッドの切り替えはOSが勝手にやるんだから、これは当然起きてしまいそうな気がするんだが、防ぐ手立ては
あるんか?
2018/03/04(日) 09:32:08.73ID:fUFxJxoP
>>4
>手順を踏まないと〜
いいや、作成したコントロールすべて
>これは「コントロールは〜
スレッドセーフ性についてはリファレンスに書いてあるのでお読みください
勝手に判断していいことは何もない
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.control(v=vs.110).aspx
>手順を踏まないと〜
いいや、作成したコントロールすべて
>これは「コントロールは〜
スレッドセーフ性についてはリファレンスに書いてあるのでお読みください
勝手に判断していいことは何もない
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.control(v=vs.110).aspx
2018/03/04(日) 09:37:54.15ID:fUFxJxoP
>疑問2
個々のクラスのスレッドセーフ性については、使用するクラスのリファレンスを参照
スレッドセーフなコレクションクラス群というのも提供されている
https://docs.microsoft.com/ja-jp/dotnet/standard/collections/thread-safe/
スレッドセーフでないクラスをスレッドセーフに扱いたいのであれば自分でその機能を実装する必要がある
その際はlockステートメントやAutoResetEventクラスなどが役に立つだろう
個々のクラスのスレッドセーフ性については、使用するクラスのリファレンスを参照
スレッドセーフなコレクションクラス群というのも提供されている
https://docs.microsoft.com/ja-jp/dotnet/standard/collections/thread-safe/
スレッドセーフでないクラスをスレッドセーフに扱いたいのであれば自分でその機能を実装する必要がある
その際はlockステートメントやAutoResetEventクラスなどが役に立つだろう
2018/03/04(日) 09:43:21.26ID:fUFxJxoP
どうやって実装するかに関しては
一般的なスレッドセーフプログラミングのガイドに従うが
あまりにも広範すぎるのでここには記載しない
手っ取り早くはラッパクラスを書き、
ラッパクラスのプライベートなインスタンス変数にロックオブジェクトを確保し
すべてのメソッドの入り口でロックを取ってしまうことである
一般的なスレッドセーフプログラミングのガイドに従うが
あまりにも広範すぎるのでここには記載しない
手っ取り早くはラッパクラスを書き、
ラッパクラスのプライベートなインスタンス変数にロックオブジェクトを確保し
すべてのメソッドの入り口でロックを取ってしまうことである
8デフォルトの名無しさん
2018/03/04(日) 10:16:01.96ID:Jnf3+hM1 >>5
こいつらだけがスレッドセーフでそれ以外はセーフじゃない。
M:System.Windows.Forms.Control.BeginInvoke(System.Delegate),
M:System.Windows.Forms.Control.EndInvoke(System.IAsyncResult),
M:System.Windows.Forms.Control.Invoke(System.Delegate),
P:System.Windows.Forms.Control.InvokeRequired,
and M:System.Windows.Forms.Control.CreateGraphics(ただしすでにハンドルが生成されていること)
ハンドルがクリエイトされる前のバックグラウンドでの.Forms.Control.CreateGraphicsスレッド
の呼び出しは問題をひきおこす。
って書いてあるので、まあそういうことなんだな。
セーフじゃないのは解ったが、スレッドが何処で切り替わるかが問題だな。
少なくともInvoke中は切り替わらないから、Invokeに渡すDelegateにガッサリとほりこんでやれば絶対に
安全ってことでいいのだな。
それなら別にLockもへったくれもいらない。なんも難しくないな。
こいつらだけがスレッドセーフでそれ以外はセーフじゃない。
M:System.Windows.Forms.Control.BeginInvoke(System.Delegate),
M:System.Windows.Forms.Control.EndInvoke(System.IAsyncResult),
M:System.Windows.Forms.Control.Invoke(System.Delegate),
P:System.Windows.Forms.Control.InvokeRequired,
and M:System.Windows.Forms.Control.CreateGraphics(ただしすでにハンドルが生成されていること)
ハンドルがクリエイトされる前のバックグラウンドでの.Forms.Control.CreateGraphicsスレッド
の呼び出しは問題をひきおこす。
って書いてあるので、まあそういうことなんだな。
セーフじゃないのは解ったが、スレッドが何処で切り替わるかが問題だな。
少なくともInvoke中は切り替わらないから、Invokeに渡すDelegateにガッサリとほりこんでやれば絶対に
安全ってことでいいのだな。
それなら別にLockもへったくれもいらない。なんも難しくないな。
9デフォルトの名無しさん
2018/03/04(日) 10:18:39.61ID:Jnf3+hM1 >一般的なスレッドセーフプログラミングのガイドに従うが あまりにも広範すぎるのでここには記載しない
いったいどう広範なんだ? Lockしたら終わりだろ。変数の書き換え中に切り替わらんなら何も問題ないはずだよな。
いったいどう広範なんだ? Lockしたら終わりだろ。変数の書き換え中に切り替わらんなら何も問題ないはずだよな。
2018/03/04(日) 10:21:36.77ID:kbKww4G0
頭悪そうだから死んだ方が早いよw
頑張って
頑張って
2018/03/04(日) 10:26:47.18ID:P1djYTMd
ID:Jnf3+hM1は例のアホだろ。相手すると有害
12デフォルトの名無しさん
2018/03/04(日) 10:27:55.49ID:Jnf3+hM1 Lock(object)
馬鹿っぽいのはこっちだな。なんでObjectでロックする必要があるんだよ。単にラベルでいいだろ。
Lock(name)
なんかサンプルにしろ説明にしろ難しそうに見せたがるんだよな。賢そうに見せたいんだろうな。要するに
賢くないってことだな。
馬鹿っぽいのはこっちだな。なんでObjectでロックする必要があるんだよ。単にラベルでいいだろ。
Lock(name)
なんかサンプルにしろ説明にしろ難しそうに見せたがるんだよな。賢そうに見せたいんだろうな。要するに
賢くないってことだな。
2018/03/04(日) 10:28:25.45ID:fUFxJxoP
ああ一昨日くらいにTaskでギャーギャー喚いていた人でしたか
気付かず相手をしてしまいました
申し訳ありませんでした
気付かず相手をしてしまいました
申し訳ありませんでした
14デフォルトの名無しさん
2018/03/04(日) 10:31:50.77ID:Jnf3+hM1 素人の簡単な質問に答えられないで、解った振りをするのは良くないぞ。
2018/03/04(日) 10:35:45.11ID:1sQ1Awq8
なんでワッチョイにしなかったの?
今更IDでNGとか面倒だわ
今更IDでNGとか面倒だわ
2018/03/04(日) 10:58:16.52ID:AyWkuyS0
17デフォルトの名無しさん
2018/03/04(日) 11:02:22.21ID:Jnf3+hM1 スレッドセーフについては
http://www.atmarkit.co.jp/ait/articles/0505/25/news113_3.html
ここが詳しい。これは頭のいい説明だからすぐわかる。
要するにロックすればいいのだが、あたりかまわずロックするとかなり負荷が
かかるので少し工夫がいるということだな。別に難しいことはなにもない。
http://www.atmarkit.co.jp/ait/articles/0505/25/news113_3.html
ここが詳しい。これは頭のいい説明だからすぐわかる。
要するにロックすればいいのだが、あたりかまわずロックするとかなり負荷が
かかるので少し工夫がいるということだな。別に難しいことはなにもない。
2018/03/04(日) 11:47:26.08ID:ARj8S9qu
2018/03/04(日) 14:20:47.53ID:WBzCvYNu
どーせ、下でSendMessage, PostMessageがアドレス渡してるだけ
2018/03/04(日) 14:42:13.81ID:uAAm/7vQ
質問です。
class A
class B : A
class C : A
class D : A
のような感じでAを継承するクラスがいつくかあったとき、Aの関数に
public A Copy()
{
return new BとかCとかD;
}
みたいな感じで、Aから自分が今なんのクラスなのかを見て
B・C・Dを生成することはできないのでしょうか?
class A
class B : A
class C : A
class D : A
のような感じでAを継承するクラスがいつくかあったとき、Aの関数に
public A Copy()
{
return new BとかCとかD;
}
みたいな感じで、Aから自分が今なんのクラスなのかを見て
B・C・Dを生成することはできないのでしょうか?
2018/03/04(日) 15:00:25.90ID:TuLIeqFr
2018/03/04(日) 15:27:46.44ID:uAAm/7vQ
2018/03/04(日) 19:13:35.42ID:u0JZMqVO
2018/03/04(日) 19:59:17.54ID:nPEAVJyb
触るなって言ってんだろテメーも脳に障害おってんのか可哀想にな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 国民 居住目的でない住宅所有者に「空室税」課せる法案を提出 [少考さん★]
- 国民 居住目的でない住宅所有者に「空室税」課せる法案を提出 ★2 [少考さん★]
- 「働いて働いて」の流行語大賞に懸念 「言葉が独り歩き」 過労自殺遺族 [尺アジ★]
- アメリカ、入国時に「日本人を含む外国人観光客の最大5年分のSNS履歴の提出」義務化へ 過去10年間に使用のメールアドレスや電話番号等も★3 [Hitzeschleier★]
- 【画像】消えた美人女優 上原多香子さん(42)、沖縄で目撃される [牛丼★]
- 「暖房が使えない」「食費が高くて子どもの栄養が…」 物価高に苦しむ子育て世帯、政府に期待する支援は ★2 [蚤の市★]
- ファッション専門家「高市さんの服装は完璧100点です。」💯 [153490809]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★1
- 【悲報】 世界最大級のポルノサイトPornHubの日本人ユーザーの年齢層、ヤバ過ぎる [303493227]
- きたくしたのだ
- 高市早苗、森元総理の愛人だった [347751896]
- 【高市朗報】中国、歴史上日本に一度も侵攻したことがない親日国だった [931948549]
