ふらっと C#,C♯,C#(初心者用) Part134
■ このスレッドは過去ログ倉庫に格納されています
「どんなにくだらない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 >>113
そもそも、なんで提示したコードがdまで実行しないとキャンセルされないか理解できてる?
理解出来てればBackgroundWorkerを別の手法に変えても意味がないことは分かると思うんだけど >>107
>Abortはしたくない
元質問者はAbortしたくないとは言ってないと思うぞ バックグラウンドなんちゃらってなんだ?
タイマーでいいじゃん >>126
そんなに悪くないね
bの後2秒待ってコンソールにハゲと出力
3秒後にc
みたいな仕様変更があったとしたらどうなる? >>130
アホなん?
そんなレアケース持ち出して何が楽しいんだ?
そんな風になったら別のコーディングするに決まってんじゃん タイマーでもTickイベントを1秒おきにすればその実装できるし
while+sleepとかアホすぎるわ >>131
推測でしかないが質問者のやりたい事ってAPIが提供されてないアプリのGUIオートメーションだと思うんだ
やってみるとわかるけど、等間隔キー入力の繰り返し、のような単調な操作のほうがむしろレアケースだよ バックグラウンドワーカーとかタイマーじゃなくてTask.Runの中にwhileとsleepとカウンタを全部ねじ込んだほうががまとまりがいいな ちなみに>>114の実装ならマクロが多少複雑化しても可読性がそこそこ良いのでオススメ
IEnumerable<Action> GetJobs() {
while (true) {
yield return () => SendKeys("A");
yield return () => Sleep(5000);
yield return () => SendKeys("B");
yield return () => Sleep(2000);
yield return () => SendKeys("ハゲ");
yield return () => Sleep(3000);
yield return () => SendKeys("C");
yield return () => Sleep(5000);
yield return () => SendKeys("D");
yield return () => Sleep(5000);
}
この考え方を進化させてJobsをActionの列挙ではなく式木にしたら記述が楽そうだな、とかインタープリターパターンで実装したらユーザー目線で便利そうだな、とか発展していく 非同期処理は、コンテキストが異なるから、処理の実行順番は確定しない
ビジーループするのは、もってのほか。
ビジーループは同期処理
非同期処理は、コールバック関数を使う。
相手の処理が終わったら、コールバック関数を呼んでもらう
コンテキストが異なるものは、マルチスレッド・マルチプロセスでも、
OS がCPU のタイムスライス、スレッド・プロセスの優先度・実行順番を決めているから、
プログラマーができる事は無い
複数のスレッド・プロセスは、無関係に同時に、異なるCPU で動く(並行処理)から、
処理時間が短くなるが、処理の実行順番は、OS が決めるから確定しない
同期処理とは異なる 一番の問題は、最悪5秒戻ってこないポンコツってことだと思う そもそも、ビジーループ(ポーリング)しても意味がない
例えば、スレッドA から、10ms 毎にポーリングしても、
スレッドB の処理が10秒掛かれば、千回のポーリングは無意味
ポーリングしても、異なるスレッドの処理を速めることはできない。
OS がCPU のタイムスライス、スレッド・プロセスの優先度・実行順番を決めているから
プログラマーにできることは、コールバック関数を登録することだけ。
スレッドBの処理が終われば、それを呼んでもらうだけ 鈴虫がまだ何か言ってるな
鈴虫は鈴虫の学校にでも通ってな フリーズしない/しても問題ないUIにすればいいだけだと思うが play_abcdって雑な作りから察すると5秒おきってのはaの動作が終わってから5秒なんじゃね?
本当に5秒感覚でキーを押したいならタイマーがいいけど、各動作を5秒感覚で実行したいならタイマーは使わない方がいいかな 2〜3台のPCだけで使う小規模なアプリケーションで、不変で追加もしない500×3列程度のデータを扱いたいです。EXCELでいうvlookup関数みたいな参照を行いたいのですが、EntityFrameworkだとSQLserverのインストールが必要?なため別の方法を模索中です。
csvやtxtファイルを実行ファイルと同じフォルダにいれて参照するのがいいか、もしくは別の方法があればご教示いただきたいです >>150
EF知ってるならSQLiteが現実的じゃね? >>150
そんなもんコード埋め込みでいいよめんどくせえ
動きゃいいんだよ
C#erってそういうの好きだろ 俺ならそんなもん一枚のHTMLとJavaScriptで作ってAWS S3に置くわ
その程度のことにデプロイの手間をかけるのはアホらしすぎる >>154
いちいちブラウザひらくのめんどくさ
ブラウザだとウィンドウサイズでかいし 今時一切ブラウザ使わない業務システムなんか存在するのか?
ブラウザくらい常に開いてるだろ 500×3でたかだが1500前後にデータベースは大げさだ
.resxファイルで済む量だろう >>150
>2〜3台のPCだけで使う小規模なアプリケーションで、不変で追加もしない500×3列程度のデータ
だったら500x3の二次元配列で行けると思う。 てきとーなクラス作ってXmlSerializerで永続化すりゃOK
検索も500件程度なら速度を気にせずLINQで楽々実装可能 今時新規でXMLはないわ
このまま衰退して消えてくれ JSONの指定があればJSONでもいいけど
何も指定がなければXMLで書くけどな
別にレガシーでもなくね? でも項目数多くなって激遅になったらCSVに戻せる構造なら戻したほうがいいよ xml、resx、json、yaml、SQLiteといろいろ選択肢がありますね。少し調べてみて良さそうなもの選んでみます。ありがとうございました >>169
XML比なら、
人間にとって扱いやすい
サイズが小さい
読み書きが速い
属性と要素の使い分けをしなくていい
JSON SchemaはXML Schemaより圧倒的に分かりやすく書きやすい
配列、マップ、数値、論理値、文字列という最低限の型付けがあるので、
プログラミング言語のデータ構造とのマッピングがしやすい(XMLは属性やXML Schemaで明示的にマッピングしてやらないと使い物にならない) 人間にとって扱いやすいだけはXMLの方が優れてると思うな
特にデータ量が増えるにしたがってjsonはそのまま読むのが不可能になってくる この案件だと、Excelで加工しやすいcsvがマッチしているんじゃないかな?
そりゃxmlだって出来るが、仕組みが大きくなる SYLKファイルにしたっていいんだぜ
どうせ作業量変わんないだろ 今時パーサーやシリアライザが揃ってるんだからどれでも同じな気はする >>175
データ量が多くなるとおせーんだよなxml,json
んで運用入ってから素人でも編集できるいいツールはないの?
って普通に無いからな(笑)
本気で作るものほどcsvやxls 結局は小さいデータなら下手なDBとか使うより、
csvの方が丈夫さとか確認のしやすさで良いって言うw だから上手なDBとか使えばcsvの方より良いんだろ DBはトランザクションあるから規模に関係無く必要だと思ったら使っとけ
設定ファイル的な話としたら
xmlとjsonって微妙だよねと 設定ファイル的な話だとしたらjsonって微妙だけどxmlはクソ
xmlはどんな用途向けにもクソ >>185
言うほど変わらんような気がするけど
何が嫌なんだ? >>186
嫌なのではなくクソだと言っとるのだが? アホちゃいまんねんパーでんねんって言われてもどう違うのか本人にしか分からんよw >>190
何が気にいらんのか知らんけど変な絡み方するのやめてもらえんかな? むしろお前が無駄に絡んでる気がするが...
俺も>>179でFAだと思う >>194
同じって事はないよ
どの形式でも必要十分な機械可読性を得られるなら
選択の決め手になるのは速度などではなく人間可読性
ヒューマンリーダビリティ
xmlはこれが壊滅的にクソ バックエンドだと設定ファイルは.csがベスト
貧弱なインテリセンスで間違えやすい設定なんか書きたくないっすわ
テストまで考えるとビルドなしで変更可能である意味がほとんどないしな 今日は特別に俺からのクリスマスプレゼントの言葉を贈ってやろう
お前らはもう少し自分の無知無能と真剣に向きあった方が良い >>180
多くなるならJSON Linesの方が効率いいよ
ログとかで普通に使われるファイル形式
CSVはスキーマが変わると面倒なんだよな 今時csvはなんちゅう本中華
レガシーへ(から)の接続ならしょうがないが >>202
いいアイディアだな
ただこのスレはこのまま残して
初心者雑談用として新しくスレが欲しいな そんなことしても質問スレで雑談が始まるのは目に見えてるやん... 議論スレがあるじゃん
脱線しそうなら自発的に移動して
ふらっと C#,C♯,C#(議論用) [無断転載禁止]©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1469538912/ 無理でしょ
どこまでが質問の答えなのか雑談なのか区切りが曖昧だし >>199
ごめんなさい。
今日の朝、靴下にその言葉入ってたら読んでたよサンタさん! >>207
>>199みたいに自覚ない奴がいる限り誘導しても無駄でしょ
まあXMLに親でも殺されたんだろうな w ボクのおとうさんは、XMLというやつに殺されました
俺はWPFだなw 初心者なので教えてください。
xml ならDataSet.ReadXml()でお手軽に扱えてたんですが、jsonはどう読み込んで使うのですか?
ちょっとググったら、jQueryとか、webっぽいのが目についたのですが、ローカルexeでも使えるんでしょうか? >>211
NuGetでJson.NETを拾ってくる UWPならWindows.Data.Jsonが使えるのでダウンロードしなくてもよい XML最高って言う奴がいるけどDTDとかちゃんと理解して使ってるのか疑問
俺はさっぱりわからなないので放置してる
XMLは賢い人が集まって俺って賢いだろを連発してクソ企画になったって本で読んだ XMLは同じようなものが大量に並んでてゲシュタルト崩壊?してタグがタグに見えなくなる jsonの問題はコメントだな、一応使える場合もあるけど本式はコメント使えない
ググると作者が原理主義者でどうにもならんようだ >>218
じゃあ折角だし
ListviewItemCollectionやCollection<T>をソートするいい方法ってなんかある?
別インスタンスにするのはNG
並び替えたやつをループしてRemoveとAddを繰り返しやる方法以外思いつかなかった いいってのは何がいいんだ?
メモリ効率か?
ソート速度か?
コーディングの手軽さか? >>219
並び替えたやつをループとは?
どうやって並べ替えた? そもそもICollection<T>に要素の並び順なんてものはない
IEnumerable<T>として列挙されるときの順番ならOrderBy
その順番を使い回したいならToArray >>219
分かりづらかったんで質問を変える
private readonly Collection<string> hoge
のhogeを文字列順にするとき
foreach(var s in hoge.orderby()){
hoge.Remove(s);
hoge.Add(s);
}
でできたんだけど理由があってaddは使いたくなかった
add使わないで並び替えってできる? Comparison書いてSortすりゃいいのでは
この手の問題は並び順のルールの方に重点が置かれる、並び替え方なんてこの際どうでもいい Collection<string>がICollectionの間違いならToListして代入するだけじゃないの? ■ このスレッドは過去ログ倉庫に格納されています