ふらっと C#,C♯,C#(初心者用) Part136

■ このスレッドは過去ログ倉庫に格納されています
2018/03/03(土) 15:09:05.75ID:SBEkwl3H
「どんなにくだらない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
2018/03/25(日) 20:13:55.09ID:XLrMHO3h
>>603
山田くん、座布団一枚!w
2018/03/25(日) 21:08:37.79ID:ntckGCHi
Nugetでdll等をインストールする時にApp.configも一緒に差し替える事って可能なのでしょうか?
無理ならApp.configを書き換える手段を知りたいです

EntityFrameworkをインストールするとプロジェクトのApp.configも一緒に書き換えられてると思います
これと同じことがやりたいです
2018/03/25(日) 21:18:29.22ID:o6f1Dm/5
>>520
しらなんだー
使ってみます!


仕事でプログラム組んでた時にはいろいろと新技術を追いかけて勉強してたんだけど、
仕事じゃなくなるととりあえず、やりたい事を達成する為に
必要な機能をおいかける様になりますな。
2018/03/25(日) 23:07:48.90ID:30He22WI
引数ありで起動した場合はフォームを表示させずに処理させたいんだけど……?(°_ 。)?(。_ °)?
2018/03/25(日) 23:12:48.41ID:B8f0LaKL
出来るよ
2018/03/25(日) 23:48:35.48ID:n/bZLhLz
>>576
>>580

あおりじゃなく君たちがマジだったってのはわかったよ
質問者が明示的に指定した要望を満たす事だけを考えてるから話が噛み合わなかったのね

指定されたwhatが正しい前提でhowを考えるか
正しくない可能性も考慮してwhyを含めて考えるか
視点の違い
2018/03/25(日) 23:59:44.77ID:fmRuNsvM
「○○なことがしたいんだけど…」

「その要望は正しくないから考えを改めるべきだ!」

正しくないからやらない
プログラマとは思えない凄い斬新な発想だな
2018/03/26(月) 00:09:13.21ID:v9FPJIaO
素直に「ぼくにはできましぇん(泣)」って言えばいいのにね
2018/03/26(月) 00:11:47.31ID:YTVmG1TL
質問でも回答でもないレスは他でやれ
>>607
わかりやすい方法の一つ
Visual StudioでWindowsFormで作るとProgram.csが作られるから書き換える
static class Program
{
[STAThread]
static void Main(string[] args)
{
if (0 == args.Length)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
return;
}
//ここから下に引数があった時の処理
}
}
2018/03/26(月) 00:13:56.74ID:m3Kkye2j
とりあえず初心者用スレで語るの辞めてもらえませんか
2018/03/26(月) 00:16:17.47ID:QH+aPMzj
ヨーダ記法はやめてくれ…
2018/03/26(月) 00:24:06.83ID:cY1aRMKv
>>610
設計しない下請けプログラマー的発想だな
2018/03/26(月) 00:31:10.42ID:XKiwACKR
元請けだと実際>>610は普通にあるね
ほとんど全ての案件において、客の妄想のとおりに作るなんて不可能だし、できたとしても結果的に客の利益にならない
2018/03/26(月) 00:36:48.08ID:PvcYNBhB
>>615-616
よく知恵袋にいる質問者にSEKKYOしてる奴みたいなことしてんのか
お前らさては無職だな?
2018/03/26(月) 00:42:45.85ID:vpzWQp7E
またボケ老人同士のの繰り言合戦が始まった

繰り返すが、論点は>>521,>>529的な仕組みが必要になるケースがあるかどうか。
恐らくないことはない。

一般論としては要件の合理性に疑問を持つことは悪くないが、
上記の通りこの件に関してはただの言い掛かり
2018/03/26(月) 00:50:14.64ID:Dv2PEULu
より素晴らしい設計が本当に頭に浮かんでるならそれを見せればいいのにね
何も開示しない、ただ頭ごなしに否定するだけなら、言っちゃなんだけど何も作れない素人の戯言だよね
620デフォルトの名無しさん
垢版 |
2018/03/26(月) 02:26:07.62ID:wzFW36Lw
こういうコントロールの構造なんですが、Buttonがクリックされた時にTextBoxの文字を変更したいんですが、どうするのがベストでしょうか?
今は、Buttonから、ParentでFormまで辿って、そこからTextBoxまで辿り着いてるんですが、凄い非効率な気がします・・・

これと同じ構造のインスタンスが最大70個くらい出来ます。

Form - Panel1 - Panel2 - TextBox
    - Panel3 - Panel4 - TabControl - TabPage - Panel - Button
2018/03/26(月) 02:43:07.18ID:cavhWqCs
直接インスタンスを指定できないの?
private void Button_Click ( ... )
{
  this.HogeTextBox.Text = "hoge";
}
2018/03/26(月) 04:07:03.39ID:AffV6ek/
イベントメソッドの共通化や、自作のボタンクラスの話だったりといった特殊なことをしたいのかな?
普通は上にある通りクリックイベントでテキストボックスの値を変えるだけ70個ボタンがあるなら70個書けばいいだけなんだけど
2018/03/26(月) 07:56:24.40ID:M54ZFy+S
スタートボタンを押すとbackgroundworkerのwhileループを実行し、キャンセルボタンを押すと停止するプログラムを作りました

これを9時になると自動でスタートし、17時になると停止するプログラムにしたいのですがどうすればいいでしょうか?
自動停止時にはキャンセルボタンを押した時と違いそれ専用の処理を行いたいです。
2018/03/26(月) 08:10:40.35ID:DzDpiGFR
コントロールの種類・処理が異なるなら、
各コントロール毎に、イベントハンドラーを付ける

逆に、コントロールの種類・処理が同じなら、
各コントロールの親に、イベントハンドラーを付けて、親で処理する

同じような関数を、たくさん作るのは良くないから
2018/03/26(月) 08:15:42.61ID:DzDpiGFR
>>623
「windows タスクスケジューラ」で検索!
2018/03/26(月) 12:37:28.74ID:KMiayiKp
どういった方法を使えばいいかすらわかりません
タスクスケジューラーはなしでやりたいです。
627デフォルトの名無しさん
垢版 |
2018/03/26(月) 12:43:13.71ID:ErqiV+UW
自分で自分を起動するメタプログラムやね
2018/03/26(月) 12:49:56.47ID:ZELYO3P5
>>626
なんで?
それだともうサービスアプリみたいな方法しかないけど
苦労の割にタスクスケジューラと変わんないよ
2018/03/26(月) 12:54:28.04ID:4B0nX6es
>>623
タスクスケジューラなんて関係ないから騙されちゃダメwww

要は今はUIのボタンを押して人が手動で開始/停止してるのを
開始時刻/停止時刻で自動でやりたいってだけでしょ?

そんなのタイマでも使って時計をポーリングするだけ。
何が難しいのよ逆に
2018/03/26(月) 12:59:57.75ID:ZELYO3P5
アプリは起動してる前提でいいの?
終了してると動かないけど
2018/03/26(月) 13:02:31.43ID:oo+qoL1t
何が難しいかと言えば、ボタンが有るだけに「閉じるボタン」押されてアプリが落ちる件
2018/03/26(月) 13:06:38.61ID:PvcYNBhB
また常駐アプリの概念すら知らない初心者が知ったかでアドバイスしてる
2018/03/26(月) 13:13:11.57ID:4B0nX6es
これ前も書いたけど、常駐なんて概念は20年以上前のシングルタスクのDOSの概念
今時何の意味ももたない

何が知ったかだよアホかほんと
2018/03/26(月) 13:17:42.44ID:xJxqYO19
マルチタスクで常駐が意味無いなんて初めて聞いたがどこ情報だよ
ソース出してみ?
2018/03/26(月) 13:18:39.78ID:4UQMW5SP
windowsで○○時にアプリを起動したいという目的に一番かなっているのはタスクスケジューラー
linuxでもcron使う局面

ずっと起動しっぱなしのアプリやサービスでポーリングやタイマー使うこともできるけど無駄
2018/03/26(月) 13:21:52.38ID:PvcYNBhB
>>635
『アプリを起動』なんて言葉は>>623のどこにも書いてないけどな
2018/03/26(月) 13:28:09.86ID:xpW3ZJwT
単に起動するだけならタスクスケジューラーでよいと思うのですが
時間が過ぎたら、それ専用の動きをして停止したいのです
なのでタスクスケジューラーでは難しいかなと
timerで検索したり、同じような悩みの質問を探してみると必ず「タスクスケジューラー!」という回答者がいるのですが、求めているのはそれではないんです!
2018/03/26(月) 13:29:55.97ID:4UQMW5SP
時間が過ぎたらってただ単にDatetime.Nowが指定した時間を経過したかどうか調べるだけだけど
2018/03/26(月) 13:31:09.52ID:xpW3ZJwT
>>629
タイマーを使って時計をポーリング?
という方法で調べてみます
ありがとうございます
2018/03/26(月) 13:32:01.24ID:4UQMW5SP
backgroundworkerのwhileループで指定された時間を超えてるか調べる
もし超えてたら何かをして終了
2018/03/26(月) 13:32:30.43ID:xpW3ZJwT
>>638
その方法を調べてみます
2018/03/26(月) 14:27:09.74ID:oo+qoL1t
>>632
ボタンが有るGUIのあるソフトなんだから、普通にユーザーがウインドウを閉じることを想定すべきだよ
対策は閉じるを無効にするとか、GUIと本体を分離するとか、ユーザー教育でなんとかするとか、パソコン自体をソレ専用にするとか
何処らへんで妥協するか考えないとな
2018/03/26(月) 14:47:34.51ID:PvcYNBhB
「大変!右上の×押したらプログラムが終了しちゃう!」

だから常駐化しろよって話だろ?
2018/03/26(月) 14:51:53.23ID:b4TsAUH3
それでいつ開始すんだ?
朝7:00に起動するとして
前日18:00に閉じて
朝8:00に開いたので起動
でおk?
2018/03/26(月) 14:55:32.88ID:EeYp3eGw
聞かれとこと答えずに必要のないこと聞き返したり聞かれていないこと回答する人たち
oo+qoL1t
b4TsAUH3
2018/03/26(月) 15:04:02.11ID:b4TsAUH3
>>645
いいじゃん
後は質問者が抜けを塞げばいいよ
2018/03/26(月) 15:08:18.93ID:b4TsAUH3
職業柄すべてのケースをマトリックスで表現しないと組ませてもらえないから気になるんだよ
2018/03/26(月) 15:09:01.34ID:DzDpiGFR
ポーリングは、やったらダメなのが常識だろw
素人が助言してる

CPU が動き続ける。
CPU使用率が100% になって、フリーズするだけw
2018/03/26(月) 19:03:18.07ID:Hi5Z0lMV
>>648
1秒タイマーでもCPU負荷なんてゼロも同然だよ
まさかノーウェイト全力ループさせることしか思いつかないとか?
2018/03/26(月) 19:06:27.36ID:lrnbqywH
デスクトップアプリでAzureのデータベースと接続したいのですが、一般的に接続文字列等はどうやって隠蔽するんでしょうか

ハードコーディングしてもリバースエンジニアリングされたらモロバレになるので気になります
2018/03/26(月) 19:12:25.54ID:2N4AiZYB
>>650
http://sqlazure.jp/b/sqlazure/sqlazure_teamblog/336/
2018/03/26(月) 19:21:09.66ID:Sl5sXtlN
>>650
FPGAまで落とし込むんだ
2018/03/26(月) 21:20:01.51ID:e5zVULSK
現在の日付時刻が設定した日付時刻より後か前か判断するにはどうしたらいいでしょうか?
datetime同士で引き算とかは可能なのですか?
2018/03/26(月) 21:26:27.62ID:SPNFNX7k
>>653
キーワードわかっているものはさすがにググれ
https://msdn.microsoft.com/ja-jp/library/system.datetime(v=vs.110).aspx
減算・後の数値かどうか。メソッドも演算子も全部書いてある
2018/03/26(月) 21:52:26.85ID:e5zVULSK
ありがとう御座います
datetime同士の計算結果であるtimespanはtimespan>=0やtimespan<0で場合分けしても差し支えないのでしょうか
2018/03/26(月) 21:55:12.57ID:VM7iT5OR
>>655
いや普通にDateTime同士で大小比較できるぞ
2018/03/26(月) 22:00:38.75ID:/1kq2kd6
いや、それ以前に
>>654がせっかく
> 演算子も全部書いてある
って言ってるんだからちゃんと見ようよ
https://msdn.microsoft.com/ja-jp/library/system.datetime.op_lessthan(v=vs.110).aspx
2018/03/26(月) 22:08:40.49ID:e5zVULSK
なるほど、datetimeで大小比較すればいいのですね
ありがとう御座います

msdn分かりにくくありませんか?
難しい(*_*)
659デフォルトの名無しさん
垢版 |
2018/03/26(月) 22:18:02.65ID:AHHYeqDL
>>658
分かりにくいよね
俺も前からそー思ってけど言い出しにくかった
2018/03/26(月) 22:36:24.40ID:pJYeIgRu
unixtimeを4.0でDateTime型に変換するにはどうすればよかたい
2018/03/26(月) 22:42:13.90ID:iiFlz3sh
>>660
4.0とは?
2018/03/26(月) 22:56:15.63ID:e5zVULSK
backgroundworker開始時に次の17時になるdatetimeを取得してループ開始、ループ毎に現在のdatetimeと設定のdatetimeを比較して過ぎていたら停止させようと思うのですが
次の17時のdatetimeを取得する方法はありますか?
2018/03/26(月) 23:34:03.76ID:Hi5Z0lMV
c# datetime unixtime
2018/03/26(月) 23:48:44.24ID:lh4NSg1Q
>>662
datetimeそのものじゃなくても時間だけならHourを比較したらいいよ

var h=Datetime.Now.Hour;

if( h>=9 ){ ... } //9時以降なら
2018/03/26(月) 23:56:49.96ID:pJYeIgRu
>>661
.netです
2018/03/27(火) 00:02:34.95ID:RoQzbf+s
>>664
それがすごい気になるんですが
9時以降っていうのは何時までを指すのでしょうか?
極端な話次の日の8時とかになっても条件を満たしますか?
2018/03/27(火) 00:06:42.35ID:5DREL+sj
>>665
.NET Framework4.0のこと?もうとっくにサポート切れてるけど合ってる?
2018/03/27(火) 00:06:43.46ID:1syCFnvF
どこ基準のUNIXTIMEか知らないけど1970年1月1日からの経過秒数だから
var origin =new DateTime(1970,1,1);
var unixtime=DateTime.Now-origin;

タイムゾーンは自分で好きなようにしてください

>>666
Hourはあくまでも時間の部分だけだから0時になったら満たさなくなる
条件はよく考えて自分で設定すること
2018/03/27(火) 00:08:14.05ID:1syCFnvF
ああ抜けてる

var origin =new DateTime(1970,1,1);
var unixtime=( DateTime.Now-origin ).TotalSeconds;
2018/03/27(火) 00:20:12.69ID:RoQzbf+s
なるほど、ではループが30分の場合
終了を23時50分に設定してしまうと止まらず動いたままになる可能性もあるということですね
2018/03/27(火) 00:30:37.92ID:i+K8FLsM
>>662
var n = DateTime.Now; // 今
var s = n.Date.AddHours(17); // 今日の17時
var x = n < s ? s : s.AddDays(1); // 次の17時
while (DateTime.Now < x) {
// 次の17時まで何かする
}
2018/03/27(火) 00:33:39.52ID:1syCFnvF
Datetimeのコンストラクタはいろいろなパターンがあるからどうとでも作れる
DatetimeはTimespanを足して新しいDatetimeもつくれるので

まあじっくり見て勉強することだな

終了条件をどのように設計してるのか知らないけど特定の日付の特定の時刻を設定してたら
途中で休止などして時刻を過ぎた後、再度復帰した場合すぐ終了してしまう
そして、指定時間以降だったらまたすぐ動くことになる

などどういうことを想定するよって何を選ぶかは変わる
2018/03/27(火) 00:34:17.93ID:1syCFnvF
>>671
思いっきりバグコードだけど
2018/03/27(火) 00:36:06.00ID:RoQzbf+s
>>671
これいいですね!
解決しそうです。ありがとうございます。
xの?や:の意味がわかりませんがとりあえずコピペします
ラムダ式みたいなものかな?
2018/03/27(火) 00:36:42.86ID:RoQzbf+s
>>673
2018/03/27(火) 00:38:51.06ID:i+K8FLsM
>>673
えっ!?
2018/03/27(火) 00:40:05.98ID:1syCFnvF
>>675
>>676
勘違いしてた
9時スタートで5時終わりの話を引きずってるのかと思ってた
2018/03/27(火) 00:42:26.00ID:tVuDF99u
>>667
え、ソースは?
2018/03/27(火) 00:43:09.93ID:RoQzbf+s
よかったです
?はifで:はelseみたいなものですかね?
便利ですね
2018/03/27(火) 00:46:08.70ID:1syCFnvF
16時59分スタートなら1分でストップ
17時00分ジャストなら次の日の17時まで24時間でストップ
2018/03/27(火) 00:52:08.65ID:i+K8FLsM
>>671は17時直前に呼び出すと何もしないで終わる可能性があるな
do whileのほうがいいかもしれん
682デフォルトの名無しさん
垢版 |
2018/03/27(火) 00:52:53.72ID:dhIDlkWy
終了を17時30分にしたい場合は以下のようなコードで大丈夫でしょうか?

var n = DateTime.Now; // 今
var s = n.Date.AddHours(17).AddMinutes(30); // 今日の17時30分
var x = n < s ? s : s.AddDays(1); // 次の17時30分
while (DateTime.Now < x) {
// 次の17時30分まで何かする
}
683デフォルトの名無しさん
垢版 |
2018/03/27(火) 00:54:52.06ID:dhIDlkWy
>>680
こんな感じでも特に問題はありません。
むしろわかりやすくて希望通りです。
2018/03/27(火) 00:55:47.09ID:7SLvU9BO
DateTimeなんてめったに使わんけど、使ってみたら値型のくせにイミュータブルで
なんだか使いづらいね

// 時分秒が指定した値となる現在より後の直近の日時を返す
public static DateTime GetNextDateTimeFromNow(int hour, int min, int sec)
{
  var now = DateTime.Now;
  var next = new DateTime(now.Year, now.Month, now.Day, hour, min, sec);
  return next > now ? next : next.AddHours(24);
}
2018/03/27(火) 00:56:05.12ID:1syCFnvF
>>682
試せばいい
DateTime.Nowじゃなくて自分てnew Datetime()して
自由にnを作って試せばいい
2018/03/27(火) 00:59:24.75ID:1syCFnvF
>>684
AddHours(24)なのはなぜ?
うるう秒があったらずれる(そんな仕組みは多分ないけど)
2018/03/27(火) 01:00:54.28ID:1syCFnvF
AddDaysでもずれるか
2018/03/27(火) 01:04:20.64ID:5DREL+sj
>>678
ググれば一発やろ
2018/03/27(火) 01:05:23.72ID:Q5x4N+CR
無限ループやってる奴はわざとなのかガチなのか
2018/03/27(火) 01:11:21.45ID:t3gWSj15
仕様が全く見えて来ない
2018/03/27(火) 01:13:48.60ID:t3gWSj15
9:00~17:00でいいんだよな?
692デフォルトの名無しさん
垢版 |
2018/03/27(火) 01:16:52.17ID:dhIDlkWy
とりあえずその時間帯ですが21時から5時までとかにも対応するようにしたいです。
とりあえず出来そうです助かりました。
2018/03/27(火) 01:17:51.30ID:5DREL+sj
>>669
.NET4.6以降ならBCLに専用のAPIが用意されてるからこんなことしなくていいんだけどね
2018/03/27(火) 01:19:00.55ID:tVuDF99u
>>693
糞会社が4.0止まりなんだ
2018/03/27(火) 01:20:41.65ID:rY6p5Eum
>>694
4.0はもうサポート対象外だし、Windows Server 2012も非対応なのに使わざるを得ないとか同情するわ
2018/03/27(火) 01:24:49.59ID:t3gWSj15
>>692
最大実行時間は何時間なん?
21時〜3日後の21時までなんて可能性は排除できるん?
平日と休日とで違いはないん?
とかね
なんか仕様がモヤっとしてんじゃん
697デフォルトの名無しさん
垢版 |
2018/03/27(火) 01:30:08.36ID:dhIDlkWy
>>696
だいたい8から13時間程度の稼動になります!
2018/03/27(火) 01:30:24.22ID:ff4RZBmU
4.X系ならアップグレードのコストはそんなにかからないだろうに
お前が変えさせるか、辞めちまえ
2018/03/27(火) 01:36:06.94ID:t3gWSj15
>>697
最大よ最大
返答に範囲が返って来ると気が狂うん
イレギュラーケースの最大を聞いてん
2018/03/27(火) 01:49:34.53ID:XpaqG/wa
最大13時間です!
すいません!
2018/03/27(火) 03:45:35.94ID:7OwU1Hvz
同期プリミティブ
http://www.tokumaru.org/techterm/primitive.html

ポーリングは、ダメの見本。常識

ランデブーとか、待ち合わせしたいだけだろ。
それか、非同期で、callback してもらえば良いだけw
702デフォルトの名無しさん
垢版 |
2018/03/27(火) 04:03:08.18ID:E80vD2cb
task.delay(100)とTheading.sleep(100)ってどう違うの?
2018/03/27(火) 07:45:14.33ID:i+K8FLsM
素人ってやたらとポーリングを嫌うよね
2018/03/27(火) 09:12:45.31ID:8h15hFzc
CPU100%とか言ってるし無限ループと勘違いしてるんだろ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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