[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/01 22:33 / Filesize : 298 KB / Number-of Response : 1019
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました



1 名前:デフォルトの名無しさん(ワッチョイ 5394-4hBO) mailto:sage [2016/12/27(火) 02:07:41.47 ID:HrGPkQcW0.net]
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part125
echo.2ch.net/test/read.cgi/tech/1475930006/

■関連スレ
C#, C♯, C#相談室 Part91
echo.2ch.net/test/read.cgi/tech/1467211515/

■コードを貼る場合は↓を使いましょう。
ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configure

221 名前:デフォルトの名無しさん (ワッチョイ d3bb-dHfL) mailto:sage [2017/01/12(木) 02:33:46.24 ID:arip6tnc0.net]
Linqは糞やで。

222 名前:デフォルトの名無しさん (ワッチョイ 26cb-TTK6) mailto:sage [2017/01/12(木) 05:22:30.14 ID:Rz+H5K5o0.net]
>>217
よくわかってるじゃん

223 名前:デフォルトの名無しさん (ワッチョイ c387-YL17) [2017/01/12(木) 11:28:08.09 ID:sl7x1gs80.net]
>>212
>>211ですが、ありがとうございます。
そのプロパティを確認してみます。

224 名前:デフォルトの名無しさん (ワンミングク MMe2-kkJw) mailto:sage [2017/01/12(木) 20:13:55.19 ID:wTRJIMgPM.net]
Linqは最高だろ
もうループなんて書きたくない

225 名前:デフォルトの名無しさん (オッペケ Sr37-tin3) mailto:sage [2017/01/12(木) 20:24:43.40 ID:pcmVyHykr.net]
インストーラーはツール使うけどアップデータは自分で作るの?

226 名前:デフォルトの名無しさん (ワッチョイ c387-YL17) [2017/01/12(木) 21:31:14.23 ID:sl7x1gs80.net]
210、218ですが、まさにやりたいことがこのページに掲載されていました。
point56.blogspot.jp/2013/11/cdatagridview.html
ですが、このページで書かれている派生クラスの使い方が全くわかりません・・・。

いろいろ派生クラスについて説明されているページを見たのですが、
理解できないで困っています。

どのようにすれば(イベント登録すれば)、DataGridViewのマウスホイールイベントをこのクラスで拾うことができるのでしょうか。

227 名前:デフォルトの名無しさん (ワッチョイ f65e-q48i) mailto:sage [2017/01/12(木) 21:36:29.73 ID:PgQtmrLv0.net]
>>222
そのコードを追加するとDataGridViewExという新しいコントロールが追加されるからデザイナから設定する

228 名前:デフォルトの名無しさん (ワッチョイ c387-YL17) [2017/01/13(金) 09:09:29.07 ID:8SyQt6YV0.net]
>>223
ありがとうございます!
新しいコントロールを作るイメージなんですね。
既存のコントロールのイベントに割り込ませてデータを操作するものかと思ってました。

229 名前:デフォルトの名無しさん (ワッチョイ bb42-o2zU) mailto:sage [2017/01/13(金) 15:34:39.80 ID:djneXx1M0.net]
>>224
継承ってのはそういうこと
既存のクラスを継承して何かを付け加える



230 名前:デフォルトの名無しさん (ワッチョイ c387-YL17) [2017/01/13(金) 19:03:27.21 ID:8SyQt6YV0.net]
>>225
解説ありがとうございます。
また一つためになりました。

231 名前:デフォルトの名無しさん (ワンミングク MMe2-kkJw) mailto:sage [2017/01/13(金) 19:26:27.17 ID:wiy2qrIvM.net]
どうしても多重継承したい
多重継承しないと人質が殺される
そんな時はどうすればいいですか?

232 名前:デフォルトの名無しさん (ワッチョイ 573c-9HYG) mailto:sage [2017/01/13(金) 19:30:04.78 ID:HmhyNPER0.net]
人質を犠牲にしろ

233 名前:デフォルトの名無しさん (ワッチョイ f69d-dHfL) mailto:sage [2017/01/14(土) 00:14:13.97 ID:exppjyX70.net]
正解

234 名前:デフォルトの名無しさん (ワッチョイ d3bb-dHfL) mailto:sage [2017/01/14(土) 05:16:19.52 ID:CFNCXkHH0.net]
C++にする。

235 名前:デフォルトの名無しさん (オッペケ Sr37-BaOC) mailto:sage [2017/01/14(土) 18:54:20.81 ID:JH3WL89Lr.net]
>>227
interfaceにして委譲コードを書きまくる

236 名前:デフォルトの名無しさん (ワッチョイ d3bb-dHfL) mailto:sage [2017/01/16(月) 06:25:25.99 ID:x3SkEOMR0.net]
委譲コードってなんですか。

237 名前:デフォルトの名無しさん (ワッチョイ f717-q48i) mailto:sage [2017/01/16(月) 23:34:39.66 ID:eY5lFpG80.net]
処理を委譲するので移譲(デリゲート)と呼ばれます

238 名前:デフォルトの名無しさん (ワッチョイ d3bb-dHfL) mailto:sage [2017/01/17(火) 06:40:12.79 ID:cbxfPpyL0.net]
関数ポインタのことか。

239 名前:デフォルトの名無しさん (ワッチョイ 7e23-q48i) mailto:sage [2017/01/17(火) 09:35:08.34 ID:ku+L5HXP0.net]
移譲コードは謎だが、継承に対する移譲ってことで、クラスのフィールドにクラスのインスタンスを生成して利用する形態のことかと
移譲コードってのは、その内部に有るクラスへのアクセス手段のコードってことかな?



240 名前:デフォルトの名無しさん (ワッチョイ 924c-nun4) mailto:sage [2017/01/17(火) 11:24:04.19 ID:PBcgESW70.net]
関数ポインタってか、処理を動かす箱みたいな感覚

241 名前:デフォルトの名無しさん (ワッチョイ 7e23-q48i) mailto:sage [2017/01/17(火) 13:32:23.97 ID:ku+L5HXP0.net]
>>236
いや、オブジェクト指向にはC#のデリゲートとは違う移譲という概念が有って、継承と似て非なるテクニックとして屡々使われる
https://ja.wikipedia.org/wiki/%E5%A7%94%E8%AD%B2

C#のはこっち
https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%AA%E3%82%B2%E3%83%BC%E3%83%88_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)

242 名前:デフォルトの名無しさん (オッペケ Sr37-BaOC) mailto:sage [2017/01/17(火) 17:49:23.15 ID:KIp0gGYMr.net]
interface IX f1, f2, f3,...fn
interface IY g1, g2, g3,...gn

class A : IX, IY {
XImp x;

f1(){}
f2(){}
...
fn(){}

g1() => x.g1();
g2() => x.g2();
...
gn() => x.g3();
}

なんちゃて多重継承w

243 名前:デフォルトの名無しさん (アウアウカー Sa5f-tnb3) [2017/01/18(水) 20:02:35.80 ID:XUepeqxVa.net]
お勉強でASP.NETかじりだしたらソースコード自動で吐くのはいいが、フレームワークのお作法ばっかでプログラミングの練習にならんのね
スタンドアロンアプリにネット接続みたいなことやったほうがプログラミングのスキルはつくのかね?

244 名前:デフォルトの名無しさん (ブーイモ MM8b-7fB1) mailto:sage [2017/01/18(水) 20:05:28.14 ID:m92xtUQhM.net]
MVCの方やれば?
もっと原始的な仕組みだから何やってんのかよくわかるよ

245 名前:デフォルトの名無しさん (ワントンキン MMe2-kkJw) mailto:sage [2017/01/18(水) 20:33:15.95 ID:vXs3og/7M.net]
ASP.NETが自動で吐くコードは正直使えない

246 名前:デフォルトの名無しさん (スップ Sdf2-Fvni) mailto:sage [2017/01/18(水) 20:35:13.00 ID:bBGXUnSyd.net]
>>239
曖昧な言い方されるとわからん
ASP.NET Core触ってその感想なわけ?

247 名前:デフォルトの名無しさん (ワッチョイ bbdc-lDPz) mailto:sage [2017/01/18(水) 22:05:09.42 ID:cw6vafSX0.net]
一口にプログラミングのスキルといっても色々ある
1. 複雑で大規模なロジックをエレガントに設計・実装できる
2. 難解なアルゴリズムを設計・実装できる
3. ハード・ミドルウェア・通信プロトコルなど、インフラを深く理解してプログラムから使いこなせる
ASP.NETで身につきにくく、より薄いWebフレームワークを使うことで身に付くのは3
一般的なアプリケーションエンジニアに求められるのは1
解析とかコンパイラ開発のような特殊分野の専門家は2

248 名前:デフォルトの名無しさん (ワッチョイ 573c-Fvni) mailto:sage [2017/01/18(水) 23:21:54.21 ID:T8mUfMDR0.net]
>>241
具体的には何のコードのことを言ってるの?

249 名前:デフォルトの名無しさん (ワッチョイ f3bb-3qL8) mailto:sage [2017/01/19(木) 07:29:23.09 ID:q3hudiC70.net]
求められてるのは仕様書もない糞コードを読むスキルやで。



250 名前:デフォルトの名無しさん (ワントンキン MM9f-aDhR) mailto:sage [2017/01/19(木) 09:35:58.54 ID:uhfgjGGlM.net]
https://chrome.google.com/webstore/detail/%E3%81%AF%E3%81%A6%E3%81%AAng/mbgdnfmdelffjdhkdggilmphfdihnmcj?hl=ja

251 名前:デフォルトの名無しさん (ワッチョイ 230d-516J) [2017/01/19(木) 15:19:30.98 ID:qAXGwWjx0.net]
文字列からBOMを除去したいのですがどうすればいいですか?
stackoverflowにあった以下のコードを試しましたが、StartsWith()が常にTrueを返して困っています


private readonly string _byteOrderMarkUtf8 = Encoding.UTF8.GetString(Encoding.UTF8.GetPreamble());

if (str.StartsWith(_byteOrderMarkUtf8)) {
str = str.Remove(0, _byteOrderMarkUtf8.Length);
}

252 名前:デフォルトの名無しさん (アウアウウー Sa67-gIHQ) mailto:sage [2017/01/19(木) 15:30:12.33 ID:IRyNom+ra.net]
BOMってのは生のバイナリーレベルの話であって
少なくともC#のstringに含まれるような代物じゃないと思うんだけど

253 名前:デフォルトの名無しさん (ワッチョイ 9319-r4l2) mailto:sage [2017/01/19(木) 15:40:35.80 ID:4wnEpswf0.net]
BOMもUnicode文字の1つU+FEFFだからStringに入れることはできるよ
どっから入れるかは微妙なとこだけど(UTF8Encoding.GetStringは問答無用で消すみたいだし)
で試したけど"\ufeffA"はifに入って消えたし"A"はifに入らなかった

254 名前:デフォルトの名無しさん (ブーイモ MM67-XRLM) mailto:sage [2017/01/19(木) 17:59:08.76 ID:runhsDy0M.net]
シリアル通信プログラムを作成しています。

メインスレッドでコマンド1を送信し、受信内容がAだったらコマンド2を送信するという処理にしています。
受信側(別スレッド?)の処理が終わる前にメイン側が受信内容の判断処理に入ってしまうため、本当に受信内容がAの場合でもコマンド2に移ることができません。
どのように対処すればよいでしょうか。

255 名前:デフォルトの名無しさん (ワッチョイ 7f4c-VYni) mailto:sage [2017/01/19(木) 18:08:11.71 ID:FKV8qOhE0.net]
受信処理の整合性を判断して、受信処理からInvokeで判断処理を呼ぶ

256 名前:デフォルトの名無しさん (ワッチョイ 03c0-SmTw) mailto:sage [2017/01/19(木) 18:10:12.42 ID:HUduSCHL0.net]
>>250
.NET4

257 名前:.0の頃に似たようなことやったけどプロデューサー/コンシューマー パターン使ってBlockingCollection経由で受信スレッドと送信スレッドに分けたわ
今だとSystem.Threading.Tasks.Dataflowでもっとシンプルに出来ると思うけど
[]
[ここ壊れてます]

258 名前:デフォルトの名無しさん (アウアウウー Sa67-gIHQ) mailto:sage [2017/01/19(木) 18:22:53.29 ID:IRyNom+ra.net]
>>250
何を言ってるのかよくわからないけど、ひょっとして、

送信→受信データ解析→送信

この一連の流れを一つのメソッドで完結させようとしてない?
だとしたらたぶんそれが間違ってる。

一連のシーケンスを処理する専用のオブジェクトを用意すればそんな問題は起こらない。

259 名前:デフォルトの名無しさん (オッペケ Sr87-8S/4) mailto:sage [2017/01/19(木) 18:25:27.59 ID:ACsZSSudr.net]
c#を10年やってるのにまだ初心者の域を出ない…



260 名前:デフォルトの名無しさん (ワッチョイ f37b-3qL8) mailto:sage [2017/01/19(木) 18:41:37.78 ID:Ua4qBBzA0.net]
C#だけやってても成長しないと思う
自分が理解できる範囲、自分が分かりやすい範囲でしか書かなくなるから

261 名前:249 (ワッチョイ cfb8-3qL8) mailto:sage [2017/01/19(木) 19:07:45.79 ID:TCIFCzqn0.net]
>>251
ありがとうございます。
デリゲートで処理すればいいのですね。

>>252
ありがとうございます。
知らない単語が出てきたので調べてみます。

>>253
ご指摘の通りです。
送信メソッド:送信1→受信内容別に分岐→送信2
受信メソッド:DataReceivedイベントで受信

262 名前:デフォルトの名無しさん (ワッチョイ 7f4c-VYni) mailto:sage [2017/01/19(木) 22:09:21.74 ID:FKV8qOhE0.net]
昔、VC++でシリアル通信の非同期処理してた事があってさ、それをC#で実現しようとして
SerialPortクラスのDataReceivedイベントと
Threading.TimerクラスのTimerCallbackにAutoResetEventを入れて、
WaitHandle.WaitAnyで待機してた事を思い出した。
いま、納品現場で確認してもらったけど今まで問題が起こってないんだが、
本来、C#のシリアル通信でOVERLAPPEDの非同期処理を実現するには、
やっぱWin32APIをゴリゴリ書かんとダメなん?

263 名前:デフォルトの名無しさん (ワッチョイ 6f02-x7a5) mailto:sage [2017/01/20(金) 02:24:48.66 ID:rKwDbfSd0.net]
シリアルで非同期ってどういうことかわからん
全2重のことを非同期っていってるのか?

264 名前:デフォルトの名無しさん (ドコグロ MM7f-j6UX) mailto:sage [2017/01/20(金) 08:16:43.67 ID:ymDflbNbM.net]
>>258
>>257 はいわゆる非同期I/O とかOverlapped I/Oの話でしょ
コマンド投げといて並行して何らかの処理を行って暇になったらデータ受信するって奴
まあ通常のシリアルドライバは常時受信してバッファーに溜め込んでるからあまり意味ないけど

265 名前:デフォルトの名無しさん (ワッチョイ 7f4c-VYni) mailto:sage [2017/01/20(金) 09:21:01.06 ID:aZ8cT+JU0.net]
ふと気になっただけだ。
ごねんね、スレ汚して

266 名前:デフォルトの名無しさん (ワッチョイ 8fce-HQXh) mailto:sage [2017/01/20(金) 12:29:54.12 ID:JXdqXSkU0.net]
C#脳だとどういう事か判らんのだな
やっぱ知識が偏るよなあ

267 名前:デフォルトの名無しさん (ワッチョイ 6f02-x7a5) mailto:sage [2017/01/20(金) 12:49:05.39 ID:rKwDbfSd0.net]
>>259
それはシリアル通信での話じゃないし。その上の層とアプリ層との間での話だろ
どんな通信してようが、ローカルファイル読んでようが同じ、単なる非同期IOの話だし
まあバッファリングしないシリアル通信相手に非同期IOかけても結局待つしかないけどな

268 名前:デフォルトの名無しさん (アウアウウー Sa67-gIHQ) mailto:sage [2017/01/20(金) 13:16:41.69 ID:98BzuqOpa.net]
>>262
何を言ってるのかなこの人...

269 名前:デフォルトの名無しさん (ドコグロ MM7f-j6UX) mailto:sage [2017/01/20(金) 19:45:39.69 ID:ymDflbNbM.net]
>>257 を読んで全二重とかいっちゃう人なのでお察しってことなんでしょ w



270 名前:デフォルトの名無しさん (ワッチョイ bf85-ZNqe) [2017/01/20(金) 20:39:08.06 ID:BC+BfvLQ0.net]
質問です!
今日からC#を勉強始めました
配列のコピーをしたいのですが
ここのサイトをみると配列サイズに+1しています
string[] newAuthors = new string[authors.Length + 1];
+1せずに
string[] newAuthors = new string[authors.Length];
でいいと思ったのですが私の間違いでしょうか?
www.woodensoldier.info/computer/csharptips/53.htm

271 名前:デフォルトの名無しさん (JP 0H07-SmTw) mailto:sage [2017/01/20(金) 21:07:21.40 ID:05MQpXAxH.net]
やってみればいいんじゃない?

272 名前:デフォルトの名無しさん (ワッチョイ ff17-x7a5) mailto:sage [2017/01/20(金) 21:42:02.36 ID:MJq7L3EO0.net]
何の用途か知らないけど、ひょっとしてタイマーコールバック使ってるとこ見ると
Task.Run( () =>
{
} );
で囲むだけでお気楽マルチスレッドになることを知らないとか?

273 名前:デフォルトの名無しさん (ワッチョイ f3bb-3qL8) mailto:sage [2017/01/20(金) 21:46:16.09 ID:ao0q6onS0.net]
なんというかイラってくるレス

274 名前:デフォルトの名無しさん (ワッチョイ 7fe1-ws0G) mailto:sage [2017/01/21(土) 01:34:13.79 ID:XoO/Nzrc0.net]
>>265
+1は不要だね

275 名前:デフォルトの名無しさん (ワッチョイ 8fcb-YAkb) mailto:sage [2017/01/21(土) 01:34:35.71 ID:O/GZ8TN60.net]
>>267
カッコ内の処理が下に記述された処理より後に実行されるのがお気楽でないね
複数書いたらどれが一番最初に実行されるんだろか?
ってところを実はよくわかって使っていないことが同僚にバレるのも時間の問題なわけだよ

276 名前:デフォルトの名無しさん (ワッチョイ bf85-ZNqe) mailto:sage [2017/01/21(土) 08:30:00.84 ID:7Cy++wUg0.net]
>>269
ありがと〜

277 名前:デフォルトの名無しさん (ワッチョイ 7f4c-VYni) mailto:sage [2017/01/21(土) 11:25:24.95 ID:wJLBUXJS0.net]
>>267
通信プロトコルで、48bit時間以上の無受信で一区切りなんだけど、ドライバーでSerialPortクラスのReadTimeoutプロパティ(SetCommTimeouts関数)に完全対応していないものが多いから、そのタイマーを用意すた。

今だったら、Task.WaitAnyの一つをタイマーにしとけば楽チンだったかもね。


ところで、C#でWin32のWaitbleTimerのような、そのまま待機メソッド(Wait, WaitAll, WaitAny)に対応してるタイマーってあるの?

278 名前:デフォルトの名無しさん (アウアウウー Sa67-gIHQ) mailto:sage [2017/01/21(土) 12:31:23.14 ID:iYYQzwCfa.net]
ドライバレベルで対応するような機能かなそれ。違うような気がするけど。

ドライバって言ってるんだからシリアルUSB変換ブリッジを使ってるんだろうけど、
だとしたらそもそもUSBが間に入ってるために48bit時間なんて概念が無効なだけだと思うけど

279 名前:デフォルトの名無しさん (ワッチョイ ff3c-j6UX) mailto:sage [2017/01/21(土) 13:03:52.44 ID:1cIKmUbZ0.net]
>>273
> ドライバって言ってるんだからシリアルUSB変換ブリッジを使ってるんだろうけど、
あまり知ったかしない方がいいかと...



280 名前:デフォルトの名無しさん (アウアウウー Sa67-gIHQ) mailto:sage [2017/01/21(土) 13:09:00.67 ID:iYYQzwCfa.net]
うんお前がね

普通にPCIやExpressのバスにぶら下がる形のシリアルの拡張ボードで
特別のドライバを必要とするものなんか見たことないよ

OS標準で最初から入ってるんだから

281 名前:デフォルトの名無しさん (ワッチョイ 8fce-HQXh) mailto:sage [2017/01/21(土) 13:41:03.09 ID:oJxw4Shh0.net]
48bit時間が何ミリ秒なのか知らんけど本当なら間にマイコンとかでブリッジかますような案件じゃねえの
PC側で設定したタイムアウトのアバウトさで済む話なのかねえ
業務で使うなら破綻すると思うけど

282 名前:デフォルトの名無しさん (ワッチョイ ff3c-j6UX) mailto:sage [2017/01/21(土) 14:08:54.55 ID:1cIKmUbZ0.net]
>>275
だからいちいち無知晒さんでいいから
www.contec.co.jp/product/device/comdrv/#pci

283 名前:デフォルトの名無しさん (ワッチョイ 7f4c-VYni) mailto:sage [2017/01/21(土) 14:09:01.72 ID:wJLBUXJS0.net]
272、275が近いね。
シリアルTTLのチップがあって、そのドライバーには関数名のプレースホルダーは用意してるがタイムアウトは機能してないって回答をいただいてる。で、プロトコルのルールに従ってタイマーを用意しただけだ。
もちろん、もうこんな仕事は請けんけどな。


ただ、興味で待機メソッド対応のタイマーってC#であるん?ってのが知りたかっただけ。

284 名前:デフォルトの名無しさん (ワッチョイ cf9d-3qL8) mailto:sage [2017/01/21(土) 14:18:24.01 ID:dBVmTL1r0.net]
48bit時間ってのがどのくらいの長さなのか知りたいだけ

285 名前:デフォルトの名無しさん (ワッチョイ ff17-x7a5) mailto:sage [2017/01/21(土) 14:23:49.09 ID:JwMYXArD0.net]
マルチスレッド使いながらある瞬間だけシリアル化したいならそこだけ別関数に切り出して
[MethodImpl( MethodImplOptions.Synchronized )]を付けるとお気楽だよ
(ある電気メーカーが作ったシステムのバグをそれで直したことある)

286 名前:デフォルトの名無しさん (ワッチョイ 7f4c-VYni) mailto:sage [2017/01/21(土) 14:41:37.57 ID:wJLBUXJS0.net]
たしかボーレートの最大が115kだったんで、最短は0.4msecぐらいだったかな…って。
フレーム11ビットで4文字分ぐらい。


で、もうこの話題良いよな?

287 名前:デフォルトの名無しさん (ワッチョイ 13dc-jh1Y) mailto:sage [2017/01/21(土) 14:51:59.06 ID:Poucv/rB0.net]
>>280
それthisをロックするから.NETの推奨作法に反してる
thisのロックは外に漏れるから予期せずクラス外の排他処理と干渉して
パフォーマンスが落ちたりデッドロックしたりする原因になる可能性がある

288 名前:デフォルトの名無しさん (オッペケ Sr87-8S/4) mailto:sage [2017/01/21(土) 18:33:09.25 ID:LuBTyI4Rr.net]
WinFormで画像関連の処理(主に合成)をゴリゴリ書いてたらむちゃくちゃ重くなった
ゲームって1/60秒とかで膨大なレンダリングと合成を繰り返しつつ、AI処理とかアニメ、スキン処理とかやってるんだよな

なんでたかが画像の合成ごときで重くなってゲームだとものすごく速く処理できるのかね?
全然わからん

289 名前:デフォルトの名無しさん (ワッチョイ cf5e-SmTw) mailto:sage [2017/01/21(土) 18:38:02.55 ID:4zEMZhpt0.net]
>>283
GDIに全部やらせたら遅くなるな
合成とかはバイト配列で必要な部分だけやって表示するだけ迄に持っていくとか
DirectXやUnityに画像処理部分やらせるとか
最後はC#じゃなくC++でやるとかw



290 名前:デフォルトの名無しさん (ワッチョイ 33d6-3qL8) mailto:sage [2017/01/21(土) 18:50:02.22 ID:RZU7JwAh0.net]
実装がクソで遅いこともある
文句を言う前にプロファイラとかで調査しような

291 名前:デフォルトの名無しさん (ワントンキン MM9f-Taza) mailto:sage [2017/01/21(土) 19:02:39.13 ID:W/zpHkC+M.net]
プロファイラの使い方よくわからんし

292 名前:デフォルトの名無しさん (ワッチョイ f3bb-3qL8) mailto:sage [2017/01/21(土) 19:13:16.83 ID:0VDH7cX80.net]
C++と違ってC#にはどうやっても超えられない壁があるんだよ。

293 名前:デフォルトの名無しさん (ワッチョイ 9377-8QYx) mailto:sage [2017/01/21(土) 20:19:14.82 ID:g8nBrPXf0.net]
要所をunsafeにすることで相当効果出る場合もあるけどね。

294 名前:デフォルトの名無しさん (ワッチョイ 1342-sQpi) mailto:sage [2017/01/21(土) 20:28:06.61 ID:AZ4jUWLU0.net]
餅は餅屋
あとopenGLね

295 名前:デフォルトの名無しさん (ワッチョイ f3bb-3qL8) mailto:sage [2017/01/21(土) 21:33:09.90 ID:0VDH7cX80.net]
>>288
undafeの突入、脱出のコストが高すぎて、
丸ごとunsafeに入る規模のコードしか高速化できない。

296 名前:デフォルトの名無しさん (ワッチョイ c33c-r8v3) mailto:sage [2017/01/21(土) 22:19:24.72 ID:LzlUxaG40.net]
>>287
まあ目指すところが違うから当然だわな

297 名前:デフォルトの名無しさん (ワッチョイ 13dc-jh1Y) mailto:sage [2017/01/21(土) 22:50:54.76 ID:Poucv/rB0.net]
やってることが同じならC#とC++で速度なんか大して変わらん
少なくともスクリプト言語みたいに数桁遅いってことはないから、
C#で書いたコードそのものがボトルネックになってるときに
そのままC++に書き直したってボトルネックが解消することはまず無い

298 名前:デフォルトの名無しさん (ワッチョイ 83a1-5ScM) mailto:sage [2017/01/21(土) 23:02:05.21 ID:pcFLx4Ty0.net]
越えるも何も基本越えられちゃ困るから壁を作ってる訳で

299 名前:デフォルトの名無しさん (オッペケ Sr87-8S/4) mailto:sage [2017/01/21(土) 23:11:22.69 ID:LuBTyI4Rr.net]
それにしてもGDIでのレンダリングとゲーム用のレンダリング、雲泥の差じゃない?

画像処理はGPUで計算させればぶっ飛びで速くなるの?
あとポインタ紛いを使えばぶっ飛びになる?



300 名前:デフォルトの名無しさん (ワッチョイ 13dc-wwrd) mailto:sage [2017/01/21(土) 23:15:44.15 ID:Poucv/rB0.net]
>>294
GPUを使えば爆速になるのは正しいが、ポインタは要らん
画素にリアルタイムで変換をかけたかったらピクセルシェーダ使え

301 名前:デフォルトの名無しさん (ワッチョイ cf9d-3qL8) mailto:sage [2017/01/21(土) 23:35:53.59 ID:dBVmTL1r0.net]
合成に何に使ってるの?
Graphics.DrawImage()はクッッッッソ遅いよ

302 名前:デフォルトの名無しさん (ワッチョイ cf9d-3qL8) mailto:sage [2017/01/21(土) 23:38:32.57 ID:dBVmTL1r0.net]
×:何に
○:何

303 名前:デフォルトの名無しさん (ワッチョイ ff4a-SmTw) mailto:sage [2017/01/22(日) 00:33:58.14 ID:WHkammw20.net]
GDIは速度求めるなら使い物にならない
業務アプリのコントロールのデザイン弄る程度なら十分使える

3Dゲームの画像処理ならGPU処理一択
っても自力でガリガリ書かなくて済む時代

304 名前:デフォルトの名無しさん (JP 0H07-OQjX) mailto:sage [2017/01/22(日) 01:11:33.09 ID:eCbhYovmH.net]
>なんでたかが画像の合成ごときで重くなって
つーか、具体的にどんな合成やってるか知らないが、画像処理って下手すりゃピクセル単位で
チマチマだし、オレの中では基本的に重たそうなイメージがあるけどなあ

305 名前:デフォルトの名無しさん (ワッチョイ f3bb-3qL8) mailto:sage [2017/01/22(日) 01:19:16.26 ID:H+suNOjg0.net]
>>292
LINQ使うだけで数桁遅い。それが分からない奴はその程度のコードしか書いたことがないということ。
C#、.netの制約上のボトルネックはC++で消し飛ぶ。

306 名前:デフォルトの名無しさん (オッペケ Sr87-Hq25) mailto:sage [2017/01/22(日) 02:21:36.81 ID:bOybKaZ+r.net]
我慢大会その一

307 名前:デフォルトの名無しさん (オッペケ Sr87-8S/4) mailto:sage [2017/01/22(日) 03:39:23.27 ID:EI5AfIBCr.net]
>>295
プログラマじゃないけど前にゲーム業界にいたからピクセルシェーダは使ったことある
使ってみるかな

>>296
それですね
アルファ合成のときだけBitLocker使ってるけど
あとはGraphicsPathとか

>>298
そっち系の本買って勉強しようかな
ゲームプログラマならc++でやれるんだろうなあ
勉強してみたけど俺にはいろいろ無理だった…

308 名前:デフォルトの名無しさん (ワントンキン MM9f-Taza) mailto:sage [2017/01/22(日) 07:39:48.76 ID:4NhSs4FyM.net]
Linq遅いマンまだいたんだ
Linqじゃなくてお前のコードが酷いだけじゃん

309 名前:デフォルトの名無しさん (ブーイモ MM1f-wwrd) mailto:sage [2017/01/22(日) 08:45:32.72 ID:mrTIs+uVM.net]
>>302
Unity使えばいいのに
今時スクラッチで開発なんかしないよ



310 名前:デフォルトの名無しさん (オッペケ Sr87-8S/4) mailto:sage [2017/01/22(日) 10:17:10.34 ID:EI5AfIBCr.net]
>>304
まあそれもアリなのかな…
たしかにGPUで合成できるし
Unityで作った画像編集ソフトかあ

311 名前:デフォルトの名無しさん (ワッチョイ 33d6-3qL8) mailto:sage [2017/01/22(日) 10:45:08.68 ID:kO0RN1SM0.net]
>>303
具体例も挙げられないおじいちゃんだから仕方ないね

312 名前:デフォルトの名無しさん (ワッチョイ ff4a-SmTw) mailto:sage [2017/01/22(日) 10:58:17.59 ID:WHkammw20.net]
Linqもラムダ式も一度使うともう戻れねーよな
EFと合わせたら生産性ぱねぇし

313 名前:デフォルトの名無しさん (ワントンキン MM9f-Taza) mailto:sage [2017/01/22(日) 11:08:50.22 ID:4NhSs4FyM.net]
EFは正直どうかと思うが
パブリックプロパティだらけになって
システムのあっちこっちにビジネスロジックが分散して管理しきれなくなる
そうではなくOOPの良い習慣にしたがってビジネスロジックをクラス化する
クラスインスタンスの永続化方法も合わせてカプセル化して最小限にとどめる
こうしておけばデータアクセス処理に大した工数はかからない
工数削減の夢を見て変なフレームワークに頼って自滅することもなくなる

314 名前:デフォルトの名無しさん (ワッチョイ 13dc-jh1Y) mailto:sage [2017/01/22(日) 11:09:17.59 ID:phG9hQKS0.net]
LINQやラムダ式はメソッドの expression body definitions でかなり使いやすくなった
ちょっと込み入ってて分かりにくいラムダがあったら手軽にメソッドに括り出して名前を付けられる

315 名前:デフォルトの名無しさん (ブーイモ MM1f-wwrd) mailto:sage [2017/01/22(日) 11:19:16.48 ID:mrTIs+uVM.net]
>>308
本来はそのビジネスロジックを実装するときに内部でEFを使うんだよ
所詮シリアライザとクエリビルダにすぎない

316 名前:デフォルトの名無しさん (ワントンキン MM9f-Taza) mailto:sage [2017/01/22(日) 11:28:38.11 ID:4NhSs4FyM.net]
>>310
だからそれをやるとジワジワとトランザクションスクリプト的な実装になっていって管理が追いつかなくなるってこと

317 名前:デフォルトの名無しさん (ワッチョイ ff4a-SmTw) mailto:sage [2017/01/22(日) 11:28:58.51 ID:WHkammw20.net]
Linqが速度を売りにした技術として登場したわけじゃないわけで。
道具の使い方が悪い例を出して、道具に文句出されてもなぁ。
性能が必要なシナリオなら、システム構成、技術やアルゴリズム、言語を使いわけるものですからね。

業務系の話を例にすると。
Linqのループ処理の遅さは、数桁すら許容できるケースが多く、
DB側で絞ってるのでC#側で大量のループをぶん回すような事はしない。
テキストファイルやDB、メモリ相手のデータでもLinqは透過的に処理できるから便利。

Linqは、コレクションに対する生産性の高さが有益なんであって、
単純なループを例にしてLinqが遅いとしか言えないなら、話にならん。

318 名前:デフォルトの名無しさん (ワッチョイ ff30-QGIP) mailto:sage [2017/01/22(日) 11:31:54.78 ID:0QiRTW2m0.net]
馬鹿だから一つしか覚えられない人間に二つ目を覚えろというのは酷ではありませんか?
おそらく高脳様なんでしょうけどド低脳に対する配慮が足りませんよ

319 名前:デフォルトの名無しさん (ワッチョイ ff4a-SmTw) mailto:sage [2017/01/22(日) 11:58:44.67 ID:WHkammw20.net]
>>308
もちろんEFを使うときは、レイヤーをちゃんとわけて、カプセル化する前提ね。
ビジネスロジックも、モデルもサービスも必要に応じてちゃんと分ける。
依存関係の多いDataTableに比べたら、EFはPOCOだから、詰む事は少ないと思う。

ビジネスロジックやトラン処理がどこに来るかは、
サービス層・ドメインモデル・エンティティモデルのどこに入れるか次第だろうね。
ORMやDAC代わりにEF導入する現場なら、余計にね。

管理が追いつくかどうかは、開発の規模と設計、プロジェクト構成次第じゃない?
うちは、1ドメインで作らず適度にドメイン分割してるから複雑さは低減できてるし。
CQRSなパターンで組んだら、さらに管理が楽になった。

工数削減の夢を見る奴は、いつの時代も論外だぬw



320 名前:デフォルトの名無しさん (ワントンキン MM9f-Taza) mailto:sage [2017/01/22(日) 12:18:58.56 ID:4NhSs4FyM.net]
しっかりとレイヤ分割してるならなおさら生ADO.NETでもEFでも大した差はでない
ビジネスレイヤまでEFが染み出してくると最初は便利かなと思うが後になって後悔する
EFは本来privateであるべきプロパティが野晒しになるからロジックの分散を避けられない

321 名前:デフォルトの名無しさん (ワッチョイ a394-GGaX) mailto:sage [2017/01/22(日) 12:28:22.49 ID:opZW6Xxw0.net]
避けられなくないだろ。避けろよ
「染み出す」ってなんだよ。書くべきじゃない場所に書くな。染み出させるな






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<298KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef