X



ふらっと C#,C♯,C#(初心者用) Part144
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん (ドコグロ MM2f-DHp5)
垢版 |
2019/07/16(火) 15:36:23.74ID:i1fbuZ/pM
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■関連スレ
C#, C♯, C#相談室 Part95
https://mevius.5ch.net/test/read.cgi/tech/1508168482/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part143
https://mevius.5ch.net/test/read.cgi/tech/1558002486/

■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
0851デフォルトの名無しさん (ワッチョイ c701-2qxP)
垢版 |
2019/09/30(月) 09:29:49.98ID:fD1lXHN30
では質問しますね
Timerコンポーネントで
Timer1.Interval = 5000;とすると、プログラム起動後5秒後に初めてTimer1_Tickが
実行されますよね、これを起動時に1度実行したいのですがどうしたらいのでしょうか

Form1_Loadに書けばいいような気がしますが引数がわからない
0853デフォルトの名無しさん (ワッチョイ c701-2qxP)
垢版 |
2019/09/30(月) 09:58:04.89ID:fD1lXHN30
>>852
レスサンクスです
Delayでぐぐってみましたが、プログラムを遅延させるほうのDelayばかりヒットして
なかなか見つかりません、Timerのプロパティにそういうなのがあればいいんですが
0856デフォルトの名無しさん (ワッチョイ c701-2qxP)
垢版 |
2019/09/30(月) 10:40:02.13ID:fD1lXHN30
>>854
サンクスです
Timer1_Tickの中の処理をゴソっと別にうつすんですか、確かにうまくいきそうですね

>>855
さんくすです
Timer1.Interval = 100;からTimer1.Interval = 5000;に変更ですか
これもうまくいきそうですね、厳密な秒数は必要じゃないですし
0857デフォルトの名無しさん (アウアウウー Sa8b-dvEi)
垢版 |
2019/09/30(月) 10:47:03.32ID:ZcJV4ZEKa
>>851
どんな方法使ってもいいけど後で読んだ時に何をやってるか
分かりやすいのが一番だね

public Form1()
{
  InitializeComponent();
  Form1.Load += (sender, e) => OnEvery5Seconds();
  Timer1.Tick += (sender, e) => OnEvery5Seconds();
}

void OnEvery5Seconds()
{
.....
}

こうやった場合、FormのLoadイベントより前にOnEvery5Secondsが呼ばれる可能性が
あることは注意する必要がある。(実際にはないと思うけど)
0860デフォルトの名無しさん (ワッチョイ 7f2d-Jn7s)
垢版 |
2019/10/02(水) 01:49:10.77ID:4PgWnh+40
非同期メソッドでちょっとだけ同期処理するのにはどうすれはいいのですか?

async Task ABCasync(){
ABCasyncの呼び出し元には、終わるまで待っていてもらいたい処理();
//ここでtaskで呼び出し元に何かを返せたりするのかしら?
ABCasyncの呼び出し元には、待っていてもらう必要のない処理();
}
0868デフォルトの名無しさん (ブーイモ MM0b-upKm)
垢版 |
2019/10/02(水) 12:12:09.33ID:VOEDuxVKM
>>865
じゃぁ男女別は?
どっちのクラスが上位なの?
それとも同格で、男戦士 女戦士ってなるの?

半魚人タイプとか4足系の戦士は?
0869デフォルトの名無しさん (オッペケ Srbb-kLFp)
垢版 |
2019/10/02(水) 12:26:49.61ID:9X+f8gXkr
出来ることが変わらないなら基本変えなくていいよ
設計次第だけど

質問の内容の男戦士と女戦士で何が違うのかはっきりしない
力などの属性値(プロパティ)だけが違うなら分ける必要はないわな
半漁人でも4足系の戦士でも数値しかかわらないなら同じ

コードが共通になるなら基本的に分けなくてもいい
0872デフォルトの名無しさん (アウアウエー Sa52-8ogf)
垢版 |
2019/10/03(木) 00:57:21.26ID:z1GHd6rla
質問です
工場とかインフラの制御ソフトモドキを成果物としてWindowsアプリケーションの形式でC#で作りたいんですが、この2冊終わった後にWindowsアプリケーション開発の本買うなら何が良いですか?
また、本が時間の無駄だとしたらどこのサイトを参照すれば良いですか?
上記の件よろしくお願いしますm(_ _)m

1冊目 なるほどなっとくC#入門
2冊目 C#プログラミングのイディオム/定石&パターン
0875デフォルトの名無しさん (アウアウウー Sa21-5zAY)
垢版 |
2019/10/03(木) 01:19:35.07ID:pRlPv1jza
>>872
FormならGUIの作り方は必用なことをググって調べながら実際に作ってみるのが一番。
本は1冊以上は読むだけたぶん時間の無駄。

何かを制御するなら、それが大企業の製品で.NET用のライブラリが用意されているのでない限り
たぶんアンマネージドの知識が必要になる。
これは多分本はないので自分でググって調べる

あと多分非同期処理は必須。
最初.NET1.x時代の生のThreadとか使う記事に軽く目を通して、
その後は今時のTPLや非同期メソッドの記事を読めばいい。
本もあるけどたぶんweb上の記事で十分
0876デフォルトの名無しさん (ワッチョイ 6dda-PG2W)
垢版 |
2019/10/03(木) 01:26:24.07ID:wBmuAStK0
非同期メソッドの実行自体は慣れたけど
win10のアップデート強制再起動時に
非同期処理中のタスクをきちんと終了させる方法がわからん

突然書き込み中のファイルがぶっ壊れそうで怖いわ
0879デフォルトの名無しさん (アウアウウー Sa21-5zAY)
垢版 |
2019/10/03(木) 01:45:45.89ID:pRlPv1jza
>>878
そうかもしれないけど拡張ボードの型式でライブラリはアンマネージドdllだけかもしれない。
USB接続でアンマネージドdllの可能性もある
何とも言えない
0884デフォルトの名無しさん (ワッチョイ 6a2c-qxT7)
垢版 |
2019/10/03(木) 20:27:59.44ID:AKImZpfb0
正直設計を考え直した方がいいけど
メインスレッドで動作してる間に
TaskScheduler.FromCurrentSynchronizationContext()
でTaskScheduler確保しておいて、その"別スレッド"内で
new Task(() => DoSome()).RunSynchronously(taskScheduler)
する
0888デフォルトの名無しさん (アウアウウー Sa21-5zAY)
垢版 |
2019/10/04(金) 01:26:24.02ID:oVLixzTMa
>>883
やっぱりそういうのは非UIスレッドからも呼び出せるようにする、ではなく、
逆に普通にUIスレッド専用のメソッドとして提供して、
もし必要ならXMLコメントとかで「UIスレッド以外からの呼び出し禁止」って
明示するのが筋なような気がするw
0891デフォルトの名無しさん (アウアウウー Sa21-5zAY)
垢版 |
2019/10/04(金) 14:31:48.61ID:RxmXvWZXa
こんなの考えてみたが、あんまり便利でもないなw
private bool TryOnUIThread<T>(EventHandler<T> eh, object sender, T e) where T:EventArgs
{
  if (!InvokeRequired) return false;
  Invoke((Action)(() => eh(sender, e)));
  return true;
}

private void FileSystemWatcher_Changed(object sender, FileSystemEventArgs e)
{
  if (TryOnUIThread(FileSystemWatcher_Changed, sender, e)) return;
  var t = DoSome();  
}
0893デフォルトの名無しさん (ワッチョイ 5d01-iyyE)
垢版 |
2019/10/05(土) 10:15:38.99ID:hjSAU91p0
質問なんですが
設定ってどこにどうやって保存してますか?
.configが今ならベストなんでしょうが、保存先が
C:\Documents and Settings\UserName\Local Settings\Application Data\
になり、.iniのように、アプリをコピーで2つの設定が使えるようになりません

.configはファイルの場所が遠くて変更しにくい、iniは古くてC#で扱いにくい
どうしてますか?
0894デフォルトの名無しさん (ワッチョイ 5961-ogEr)
垢版 |
2019/10/05(土) 10:23:45.47ID:BObIlSOA0
>>893
インストールするアプリはユーザーデータフォルダのどっかに保存しないと駄目じゃん
どこでも置けるやつはexeと同じ階層に設定ファイルあったほうが使いやすいじゃん
ってだけしか気にしたことない
0895デフォルトの名無しさん (ワッチョイ 5d01-iyyE)
垢版 |
2019/10/05(土) 10:30:58.10ID:hjSAU91p0
>>894
れすさんくすです
確かにそのとおりだとおもいます

インストーラーではなく、ZIPとかで配布で、ちいさなアプリで、主にシングルユーザーで
ってなると.iniになるんでしょうか?
0899デフォルトの名無しさん (ワッチョイ b67c-MsYi)
垢版 |
2019/10/05(土) 10:47:20.84ID:xk/GxZ7j0
jsonもxmlもインデント関係ないから自由にさせろ
強制したいならyaml使え
0919デフォルトの名無しさん (ワッチョイ 5961-ogEr)
垢版 |
2019/10/05(土) 19:57:33.02ID:BObIlSOA0
>>916
jsonはカッコの対応で死ぬわ

っていうかxmlもjsonもiniファイル駆逐できるほど性能よくねーじゃん
っていうか用途が違うものを強引に適用しようとしてない?
設定ファイルに書いたコメントも消えちゃうしね
0920デフォルトの名無しさん (ワッチョイ 5961-ogEr)
垢版 |
2019/10/05(土) 20:01:44.88ID:BObIlSOA0
iniファイルを時代遅れだと主張するなら
xmlやjsonで吐き出して設定ツールぐらい用意しろってことかな?
それなら理解できるけど
xmlとjsonのテキスト編集はキツイ
0921デフォルトの名無しさん (スフッ Sd0a-reJN)
垢版 |
2019/10/05(土) 20:08:26.65ID:1O88xYRBd
ユーザーがやることはjsonの値をちょい変更するくらいなのになんでカッコ対応が問題になるんだよ
ユーザーがカッコを書く必要なんてないのに
0922デフォルトの名無しさん (ワッチョイ 5961-ogEr)
垢版 |
2019/10/05(土) 20:11:42.09ID:BObIlSOA0
>>921
いや、だからそれどこよ?
ってのを見つけるのも結構骨が折れる作業よ

だから、コメントをjsonファイルに書いておくだろ?
ところが次のアプリの書き込みで消えてるんだなw
0923デフォルトの名無しさん (ワッチョイ 3a2d-BBXA)
垢版 |
2019/10/05(土) 20:13:16.91ID:jRdA7zB80
話はよーわからんが、JSONに慣れれない人もそれがあんたの能力なんだから
しょうがないんじゃない
0925デフォルトの名無しさん (ワッチョイ 5961-ogEr)
垢版 |
2019/10/05(土) 20:16:05.57ID:BObIlSOA0
そもそもバグったときに凶悪であることは認めるだろ?
俺らだってxmlやjsonファイルでユーザーが編集したおかしな箇所を
プログラムでピンポイントで指摘できない
このファイルは完璧でないと読めない
そんなモノをユーザーに触らせるような運用は間違っている

客がいいって言うならいいけど
0932デフォルトの名無しさん (ワッチョイ 3a2d-BBXA)
垢版 |
2019/10/05(土) 20:20:51.17ID:jRdA7zB80
よく出てくくる、一本道コードのVisual Basicおじさんでしょ
0933デフォルトの名無しさん (ワッチョイ 5961-ogEr)
垢版 |
2019/10/05(土) 20:21:03.98ID:BObIlSOA0
はっきりさせておくけど

・設定ファイルをテキスト編集でユーザに触らせたい
→xmlやjsonは向かないんじゃない?

・設定ファイルをユーザに触らせない
→なんでもいいんじゃない?

ってことな
0939デフォルトの名無しさん (ワッチョイ 3a2d-BBXA)
垢版 |
2019/10/05(土) 20:28:30.38ID:jRdA7zB80
でも、初心者なのに仕事を取ってくる勇気は大したもんだよね
0940デフォルトの名無しさん (ワッチョイ eaad-geL1)
垢版 |
2019/10/05(土) 20:38:04.30ID:8wZmV3QG0
>>933
俺なら
>・設定ファイルをテキスト編集でユーザに触らせたい
→そんな仕様にはしない
なぜならあらゆるフォーマットに対応する実装とテストなんてしたくないし
そもそも設定をテキスト編集するアプリとか使いにくい

>・設定ファイルをユーザに触らせない
→xmlにする
なぜなら実装が簡単だし、開発者(俺)ならテキスト編集できるから
0942デフォルトの名無しさん (アウアウウー Sa21-5zAY)
垢版 |
2019/10/05(土) 21:28:22.83ID:Apziqq2fa
>>936
2chだとやたらとJSON推しの人が多いけど、.NET標準のシリアライザは他にもいろいろあるよw
JSONに固執する必要がないなら他を検討した方がいいと思うけど
0949デフォルトの名無しさん (アウアウウー Sa21-5zAY)
垢版 |
2019/10/05(土) 22:54:13.79ID:Apziqq2fa
DataContractJsonSerializer、使ったことなかったが調べた感じ
一通りの機能はあるし、バージョントーレラントみたいだし、別にこれでもいいねw

バージョントーレラントじゃないと思ってたが、勘違いだったみたいだ。
レス数が950を超えています。1000を超えると書き込みができなくなります。

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