X



ふらっと C#,C♯,C#(初心者用) Part134
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 0f9a-KsIq)
垢版 |
2017/11/29(水) 19:23:58.05ID:GNLsbK4F0
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part133
http://mevius.5ch.net/test/read.cgi/tech/1510056685/
■関連スレ
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/

■コードを貼る場合は↓を使いましょう。
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: checked:vvvvv:1000:512:----: EXT was configured
0457デフォルトの名無しさん (ガックシ 067f-Sycn)
垢版 |
2018/01/10(水) 17:17:37.84ID:+iIpBJgq6
>>456
それってバックグランドワーカーを開始する時に値を渡す事ですか?
WhileとReportProgressで画像表示していて、バックグランドワーカーは止まらないので開始時の値を引き渡すのだけでは、トラックバーの値変更に対応できなさそうですが、できるんですか?
的外れな事言ってたらすみません。
まだ学び始めたばかりでわからない事だらけなので

ちなみに画像生成に使うトラックバーは7本あります
0459デフォルトの名無しさん (ワッチョイ 0f9a-+W2v)
垢版 |
2018/01/10(水) 17:42:20.90ID:8CBJwk4h0
>>448
処理イベントを多重呼び出ししていない?
busyのときは呼ばないように
>>446
>whileとReportProgressでtrackbarの変更に合わせて
ReportProgressでは元のスレッドのコントロールにアクセスできるからこの意味がいまいちわからないが
とりあえず
・BackgroundWorker_DoWorkに渡す
https://dobon.net/vb/dotnet/programing/displayprogress.html#backgroundworker
呼び出す側
int value=trackbar.Value;
BackgroundWorker1.RunWorkerAsync(value);
Do_Work側
int value=(int)e.Argument;
>>453
>割と重い処理なので、同じスレッドのトラックバーのイベントハンドラで処理を行うと、トラックバーの動きがかくついて
かくつかない程度に仮処理用の縮小画像を作る
>>457
>トラックバーの値変更に対応できなさそうですが
リアルタイムに反映は理屈から言うと無理
処理量が少なければそう見えるようにも作れるから画像が大きければトラックバー動作中は縮小画像で
0460デフォルトの名無しさん (アウアウエー Sa3f-iSeT)
垢版 |
2018/01/10(水) 17:43:56.21ID:ZlAR0fHNa
>>455
>>446と同一人物?

仕様の詳細が分からんので断定はできないけど、
断片的な情報から判断すると

(1) 無限ループでTrackbar.Valueをポーリングして

(2) 変化を検出したら画像生成を開始

(3) 完了したらBackgroundWorkder.ReportProgressを呼んで
UIスレッドで画像を表示

こういうこと?
もしこうなら、スレッドで無限ループ回すって発想がたぶん間違ってる。

諸事情でBackgroundWorkderを使う必要があるにしても
Trackbar.ValueCangedイベントでBackgroundWorker.RunWorkerAsyncを
呼んで都度画像生成処理を開始するようにした方がいいんじゃないの?

それならTrackbar.ValueはRunWorkerAsyncの引数で渡せる
0462デフォルトの名無しさん (アウアウエー Sa3f-iSeT)
垢版 |
2018/01/10(水) 17:54:40.44ID:ZlAR0fHNa
ただこの場合でも、ValueCangedはたぶんユーザーがつまみを動かかしている間は
逐次的にイベントが発生しちゃうと思うから、BackgroundWorker.RunWorkerAsyncを
コールするのは、例えばValueCangedが発生しなくなってから1秒後、みたいな工夫がたぶん必要になるのかな

知らんけど
0463デフォルトの名無しさん
垢版 |
2018/01/10(水) 18:00:54.81
>>459
起動時にRunTaskWorkerを呼び出す。

doWorkでは無限ループでトラックバーの値の変更を監視

こういうことだと思う。
知らんけど。
0464デフォルトの名無しさん (ワッチョイ 39f7-RcqZ)
垢版 |
2018/01/11(木) 01:51:14.39ID:fK8uCW920
public void testA()
{
bool error=false;

error=true;
if (error == true) { return; }

textBox1.Text = "ok";
}

error=true;
if (error == true) { return; } をまとめてメソッドtestBにするにはどうすればいいでしょうか
testAの中でtestBを実行し、testBでエラーが出たらtestAもそこで処理を中止して
textBox1.Text = "ok";を実行しない
というプログラムを作りたいのですが
0465デフォルトの名無しさん
垢版 |
2018/01/11(木) 02:26:04.02
これじゃダメ?
―――――――――
...
var error = testB();
if(error) return;
...
―――――――――
public bool testB(){
var error=false;
error=true;
if(error) return true;
retrun false;
}
―――――――――
0466デフォルトの名無しさん (ワッチョイ 39f7-RcqZ)
垢版 |
2018/01/11(木) 02:53:49.75ID:fK8uCW920
>>465
やはりtestBメソッドの後で判定するしかないですよね。
ありがとうございます。
0470デフォルトの名無しさん
垢版 |
2018/01/11(木) 09:58:05.61
あと、多分FullRowSelectプロパティをオンにしないと行をクリックしたときに一列分しか色が付かない
0472デフォルトの名無しさん (ワッチョイ 4a0f-nl4B)
垢版 |
2018/01/11(木) 18:47:50.43ID:9ePH9NvT0
>>469,>>470
ありがとうございます
1つのコントロールで実現できるのですね
作るときにFullRowSelectも意識してみます
0473デフォルトの名無しさん (ワッチョイ 9ee7-p0TQ)
垢版 |
2018/01/12(金) 02:16:04.35ID:gpUPMxg50
今ってC#なら何でもできる時代か?webページもゲームもWindowsアプリもandroidも
0477デフォルトの名無しさん (ブーイモ MMc9-XZ0y)
垢版 |
2018/01/12(金) 09:23:53.14ID:4yLgM4ukM
アプリ開発言語としてはWebのフロントエンドを除けばほぼ何でもできるので
目下最も万能な言語であることには違いないが、道具を前提にして物事を考える癖がつくと頭悪くなるから一つに拘るのはお勧めしないな
0481デフォルトの名無しさん (ブーイモ MM0a-EosG)
垢版 |
2018/01/12(金) 09:54:47.82ID:1+438Ej9M
>>477
WebのフロントエンドはhtmlとJavaScriptという道具を前提とするしか無いが。
0482デフォルトの名無しさん (ブーイモ MM0a-EosG)
垢版 |
2018/01/12(金) 09:58:40.77ID:1+438Ej9M
>>480
騙されたと言うかJavaScriptの進化が速くてJavaアプレットもオワコン
0484デフォルトの名無しさん (スッップ Sd0a-6CSh)
垢版 |
2018/01/12(金) 12:34:17.17ID:OH7R1+qFd
でぇじょうぶだ。wasmがくる。
0487デフォルトの名無しさん (ワッチョイ 9ee7-p0TQ)
垢版 |
2018/01/12(金) 14:42:53.15ID:VxcDYdZu0
職につくために限定的な開発だけじゃあ厳しいなってC#なら何でも作れるようにならないとなって思って
0490デフォルトの名無しさん (ササクッテロラ Spbd-euJe)
垢版 |
2018/01/12(金) 16:00:59.66ID:C/maxB41p
スタブってのがほんとに分からん…
どんな知識が必要でどんな風に使うのかイメージ出来ん
DAO?とかの概念が自分になくてSQLを扱う部分とロジックがごっちゃになってるとそもそもスタブでなんとかしようってレベルですらないのかな
なにか猿でも分かるような記事とかないですか…
0491デフォルトの名無しさん (ブーイモ MM81-EosG)
垢版 |
2018/01/12(金) 16:11:30.81ID:mLvyYLexM
>>490
スタブってテスト用のダミーの事?
0492デフォルトの名無しさん (アウアウウー Sa21-53ns)
垢版 |
2018/01/12(金) 18:24:00.26ID:C2fpfp9ga
>>490
スタブはテストのためのダミーだよ

完成まで一時的にいれておいてビルド通したり
テストで実際の環境に影響をおよぼさないために使う

テストしない
完成まで途中で実行しない
ならいらない
0498デフォルトの名無しさん (ワッチョイ 4aa2-UJUP)
垢版 |
2018/01/13(土) 01:59:49.10ID:zim/eiwV0
sqlserverからレコード取得する処理で、dataReaderを別関数に渡して、
そっちでdataReader.Iten("hogehoge")するのってありですか?

一部のカラム名だけが異なる類似レコードの取得処理をまとめたいなあと
0503デフォルトの名無しさん (ワッチョイ 66e8-QpsD)
垢版 |
2018/01/13(土) 15:48:07.46ID:J9QLRP4o0
ItemItemって考えてるとあいてむってなんだっけ?ってなるよね
0508デフォルトの名無しさん (ワッチョイ 969c-zueB)
垢版 |
2018/01/13(土) 18:22:41.37ID:2EuaVelH0
一時期ORMが流行ったがメモリ食いすぎと重すぎて今じゃBI以外で使う機会がない
軽量wrapperを挟んでクエリ直書きの負担を軽減するというのが最近のスタイル
有名なのはDapper、Massive、PetaPocoとか
0511デフォルトの名無しさん (ワッチョイ 5e20-y5e1)
垢版 |
2018/01/14(日) 11:58:36.30ID:6wMaD5Pe0
質問させてください
まず、やりたいことは以下です
@c#からネイティブライブラリの関数を呼び出す
A引数としてマネージ側で実装した関数を渡し、ライブラリ側でその関数を呼び返す

Aでマネージ関数と一緒にマネージドオブジェクトを渡したいのですが、そのオブジェクトをGC対象から除外する方法が分かりません
GCHandle.Alloc では blittable なオブジェクトでないとダメだと怒られます
List<int> とかを渡したいのですが…… どうしたらいいでしょうか?
0512デフォルトの名無しさん (ワッチョイ 3d23-XZ0y)
垢版 |
2018/01/14(日) 12:44:23.20ID:DNkTPWoH0
>>511
普通にデリゲートをマーシャリングして渡す
呼び出す先が同期的な関数ならGCは考慮不要
非同期的にコールバックしてくるならデリゲートをフィールドに入れておいてGCを防ぐ
デリゲートのマーシャリングは非常に優秀で、メソッド内から外のローカル変数を参照してたりインスタンスフィールドを参照してたりしても問題ない
だからList<int>とかをわざわざ渡す必要はない
0513512 (ワッチョイ 3d23-XZ0y)
垢版 |
2018/01/14(日) 12:45:29.88ID:DNkTPWoH0
補足
メソッドから参照されてるオブジェクトはデリゲートが生きてる限りはGCされないので、
GC対策としてはデリゲートだけフィールドで保持しとけば十分
0514511 (ワッチョイ 5e20-y5e1)
垢版 |
2018/01/14(日) 13:56:18.92ID:6wMaD5Pe0
>>512
ありがとうございます!
解決しました。変数をキャプチャしてるラムダ式でもOKなんですね
これって実行時にコードを生成してるんでしょうか?
0515デフォルトの名無しさん (ワッチョイ 39f7-RcqZ)
垢版 |
2018/01/15(月) 08:04:36.45ID:wzT+kwGj0
visualstudio2015でifの条件式の部分が
if(a>1&&
b>1&&
c>1&&
d>1)
となっているのを
if(a>1&&
b>1&&
c>1&&
d>1)
ときれいに揃える方法はないでしょうか?
ctrl+k,ctrl+dではこの部分だけきれいにならず困っています
0516デフォルトの名無しさん (ワッチョイ 39f7-RcqZ)
垢版 |
2018/01/15(月) 08:05:35.73ID:wzT+kwGj0
if(a>1&&
b>1&&
c>1&&
d>1)
となっているのを
if(a>1&&
__b>1&&
__c>1&&
__d>1)

_はスペースです
0518デフォルトの名無しさん (ワッチョイ 39f7-RcqZ)
垢版 |
2018/01/15(月) 08:34:59.05ID:wzT+kwGj0
条件式がたくさんある場合はどうすれば見やすく書けるのでしょう…
横に伸びると見にくくて
0519デフォルトの名無しさん (ワッチョイ 6681-/vYA)
垢版 |
2018/01/15(月) 08:44:15.19ID:6fJ2ahWY0
自分にあったフォーマッタを
自分で開発すればいいんじゃないの?
出来合いで我慢できないならそれしかないでしょ
幸いにもあなたはプログラマーだ
頑張れ
0520デフォルトの名無しさん (ワッチョイ aad4-1Ifv)
垢版 |
2018/01/15(月) 09:00:59.11ID:vPE1QZCU0
if(a>1&&
b>1&&
c>1&&
d>1)
となっているのを
if(a>1&&
__b>1&&
__c>1&&
__d>1)

_はスペースです
0521デフォルトの名無しさん (ワッチョイ aad4-1Ifv)
垢版 |
2018/01/15(月) 09:02:06.54ID:vPE1QZCU0
if(a>1&&
b>1&&
c>1&&
d>1)
となっているのを
if(a>1&&
__b>1&&
__c>1&&
__d>1)

_はスペースです
0523デフォルトの名無しさん (ワッチョイ 39f7-RcqZ)
垢版 |
2018/01/15(月) 09:34:40.52ID:wzT+kwGj0
522

それでもいいんですが
____if(a>1
&&b>1
&&c>1
____&&d>1)
貼り付け繰り返してるうちにこうなっちゃったりしてるんですよね
0526デフォルトの名無しさん (ワッチョイ 39f7-RcqZ)
垢版 |
2018/01/15(月) 14:27:32.00ID:wzT+kwGj0
すっぱい葡萄
手に入れたくてたまらないのに、人・物・地位・階級など、努力しても手が届かない対象がある場合、その対象を「価値がない・低級で自分にふさわしくない」ものとみてあきらめ、心の平安を得る。
フロイトの心理学では防衛機制・合理化の例とする。
また、英語圏で「Sour Grapes」は「負け惜しみ」を意味する熟語である。
wikiより
0527デフォルトの名無しさん (ワッチョイ 39f7-RcqZ)
垢版 |
2018/01/15(月) 14:28:13.93ID:wzT+kwGj0
誤爆
0533デフォルトの名無しさん (アウアウエー Sa52-UnGo)
垢版 |
2018/01/15(月) 23:51:57.61ID:NNVQY+KWa
もう書いてる人いるけど、こういうのは結局自分の(ほとんどの場合はくだらない)
こだわりの方を修正する方が早い。

っていうか頭を揃えたら見やすいって感覚はちょっと理解不能
間違いなくただの思い込みだと断言できる
0542デフォルトの名無しさん (ブーイモ MM0a-EosG)
垢版 |
2018/01/16(火) 16:15:22.10ID:CjJlQTmDM
それはスタティックおじさん誕生じゃないのかと突っ込む
0544デフォルトの名無しさん (ワッチョイ 2ab3-1I1E)
垢版 |
2018/01/16(火) 22:11:32.35ID:augwvgTX0
string型の文字列を配列で持ちたいときはlistboxに
文字列をコピーしていく方法よりカッコいい方法ある?
0546デフォルトの名無しさん (ワッチョイ 11cc-6CSh)
垢版 |
2018/01/16(火) 22:21:16.14ID:6G3H5uZu0
stringの文字列を配列で持ちたいというのはstring[]ってこと?

listboxに文字列をコピーしていくとは?もうちょっと詳しく。

カッコいい方法というのはC#のコードの書き方という意味で?
0550デフォルトの名無しさん (ブーイモ MMc9-EosG)
垢版 |
2018/01/17(水) 12:22:20.17ID:kFuDYWJQM
エスパーはよ
0552デフォルトの名無しさん (ブーイモ MMc9-EosG)
垢版 |
2018/01/17(水) 12:30:08.90ID:kFuDYWJQM
みんなで使える優れたフレームワークはオレオレフレームワークと呼ばれない
0555デフォルトの名無しさん (アウアウウー Sa21-53ns)
垢版 |
2018/01/17(水) 13:07:25.77ID:WDfY9ZKSa
>>549
何について言ってるのか理解しづらいけど
SQLを外に出すのは悪いことなのでそういうライブラリやフレームワークはない

SQLってただの文字列でしかなくてコンパイル時に間違いがわからない
それを埋め込んでテストを繰り返すことでバグの可能性を限りなく低くしてる

でもORMなどを使っても必ずバグを洗い出せるわけじゃない
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況