「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part137
https://mevius.5ch.net/test/read.cgi/tech/1523004019/
■コードを貼る場合は↓を使いましょう。
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
探検
ふらっと C#,C♯,C#(初心者用) Part138
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 369a-msj4)
2018/06/05(火) 19:32:42.28ID:70UTtyrn0793デフォルトの名無しさん (ワッチョイ d7b3-vUFk)
2018/07/21(土) 23:21:21.79ID:R8KbBSh90 .Invokeではなく.BeginInvokeを使うのはどう?
794デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/21(土) 23:30:54.97ID:BEEMYUE30 >>793
それって
> それともThread生成してその中でParallelすれば良かったり…?
よりも更にワチャワチャする気がするのですがどうなんでしょう?
ワチャワチャって具体的にどういうことなのか
説明を求められれば頑張ってみようと思いますが、
自分の考えがあっているかも、それをうまく説明できるかどうかも
自信がないので、詳しい方の意見を聞けると嬉しいです
それって
> それともThread生成してその中でParallelすれば良かったり…?
よりも更にワチャワチャする気がするのですがどうなんでしょう?
ワチャワチャって具体的にどういうことなのか
説明を求められれば頑張ってみようと思いますが、
自分の考えがあっているかも、それをうまく説明できるかどうかも
自信がないので、詳しい方の意見を聞けると嬉しいです
795デフォルトの名無しさん (アウアウエー Sadf-0r7x)
2018/07/21(土) 23:41:01.32ID://qCwfF7a >>794
そんな難しい話じゃないっすよw
BeginInvokeは非同期に実行される、つまりキューにデリゲートを入れたらすぐに処理を返すので
Invokeのように自分で自分の終了を待機する状態に陥らない
そんな難しい話じゃないっすよw
BeginInvokeは非同期に実行される、つまりキューにデリゲートを入れたらすぐに処理を返すので
Invokeのように自分で自分の終了を待機する状態に陥らない
796デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/21(土) 23:43:41.94ID:rsQP0F780 >>792
有難う御座います
これで行けたので実装試してみます
void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("このメッセージは必ず表示される");
Task.Factory.StartNew(() =>
{
Parallel.ForEach(Enumerable.Repeat(0, 2), i => Invoke(new Action(() => { })));
}
MessageBox.Show("デッドロックするとこのメッセージは表示されない");
}
有難う御座います
これで行けたので実装試してみます
void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("このメッセージは必ず表示される");
Task.Factory.StartNew(() =>
{
Parallel.ForEach(Enumerable.Repeat(0, 2), i => Invoke(new Action(() => { })));
}
MessageBox.Show("デッドロックするとこのメッセージは表示されない");
}
797デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/21(土) 23:55:52.12ID:BEEMYUE30798デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/22(日) 00:03:07.23ID:qjdpSLXF0 >>797
データグリッドビューは進捗状況を見るために更新していて
1行1スレッドで処理されて処理後にどう処理されたかをリアルタイム表示してます
ダメではなく単純に自分が分かってないだけです
この処理ならlocalFinallyが最適かもです
深く調べてみます
データグリッドビューは進捗状況を見るために更新していて
1行1スレッドで処理されて処理後にどう処理されたかをリアルタイム表示してます
ダメではなく単純に自分が分かってないだけです
この処理ならlocalFinallyが最適かもです
深く調べてみます
799デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/22(日) 00:13:38.17ID:IU6x2eOV0 >>798
> データグリッドビューは進捗状況を見るために更新していて
> 1行1スレッドで処理されて処理後にどう処理されたかをリアルタイム表示してます
進捗状況の確認が必要なほど1行あたりの処理に時間がかかる理由は何でしょうか?
もしその理由が IO など、CPU 以外のところにあるのだとすれば、
Parallel.ForEach を使うこと自体を見直したほうがいいかもしれません
> この処理ならlocalFinallyが最適かもです
正直なところ、更新処理だけ切り出す方法よりも localFinally の方が
適切なケースはまれだと思います
ただ、localFinally の使い方がわかれば更新処理を Parallel.ForEach の外に
切り出す方法もわかると思うので、とりあえず調べてみて損はないと思います
> データグリッドビューは進捗状況を見るために更新していて
> 1行1スレッドで処理されて処理後にどう処理されたかをリアルタイム表示してます
進捗状況の確認が必要なほど1行あたりの処理に時間がかかる理由は何でしょうか?
もしその理由が IO など、CPU 以外のところにあるのだとすれば、
Parallel.ForEach を使うこと自体を見直したほうがいいかもしれません
> この処理ならlocalFinallyが最適かもです
正直なところ、更新処理だけ切り出す方法よりも localFinally の方が
適切なケースはまれだと思います
ただ、localFinally の使い方がわかれば更新処理を Parallel.ForEach の外に
切り出す方法もわかると思うので、とりあえず調べてみて損はないと思います
800デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/22(日) 00:23:24.78ID:qjdpSLXF0 >>799
圧縮ファイルを解凍して中のファイルを加工して再び圧縮し直す
これで1タスクです
1ファイル200MBほどで100ファイル以上処理することが多いです
圧縮解凍、加工は外部ツールを使用しててProcessStartInfoで処理されます
圧縮ファイルを解凍して中のファイルを加工して再び圧縮し直す
これで1タスクです
1ファイル200MBほどで100ファイル以上処理することが多いです
圧縮解凍、加工は外部ツールを使用しててProcessStartInfoで処理されます
801デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/22(日) 00:35:58.51ID:IU6x2eOV0 >>800
なるほど〜
CPU 処理も IO もあって微妙なところですね
ちなみにその外部ツールはマルチスレッドを使うオプションはないでしょうか?
(例えば 7-zip.exe だと -mmt がそれにあたります)
もし外部ツールがマルチスレッドに対応してるなら、
並列処理はそっちに任せてしまうというのはどうでしょう?
または、外部ツールではなく SharpCompress のようなライブラリを使うことができれば、
C# によるより細かい制御も可能になると思います
なるほど〜
CPU 処理も IO もあって微妙なところですね
ちなみにその外部ツールはマルチスレッドを使うオプションはないでしょうか?
(例えば 7-zip.exe だと -mmt がそれにあたります)
もし外部ツールがマルチスレッドに対応してるなら、
並列処理はそっちに任せてしまうというのはどうでしょう?
または、外部ツールではなく SharpCompress のようなライブラリを使うことができれば、
C# によるより細かい制御も可能になると思います
802デフォルトの名無しさん (アウアウウー Sadb-rtlg)
2018/07/22(日) 00:37:18.94ID:gDKcX53ba 汎用的なものとは思えないし、動けばどうでもいいだろ
俺ならそういうのはいちいちGUI付けずにコンソールでやっちゃうな
俺ならそういうのはいちいちGUI付けずにコンソールでやっちゃうな
803デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/22(日) 00:45:55.06ID:IU6x2eOV0 >>800
それともう一つ、外部ツールを呼び出すのにデフォルトの ParallelOptions で
Parallel.ForEach を呼び出すのはさすがにまずいと思います
ParallelOptions 自体に MaxDegreeOfParallelism というプロパティがありますし、
ParallelOptions の TaskScheduler プロパティに以下のような自前のスケジューラーを
設定すればより柔軟な並列処理を実現できると思います
同時実行の程度を制限するタスク スケジューラを作成する
https://msdn.microsoft.com/ja-jp/library/ee789351(v=vs.100).aspx
>>802
それは確かにw
完成したソフトによって得られる利益よりソフトを作るコストのほうが大きくなってしまったら
意味がないですからね
(ただしソフトによって得られる利益には開発者のスキルアップも含まれる・・・と言ってみたりw)
それともう一つ、外部ツールを呼び出すのにデフォルトの ParallelOptions で
Parallel.ForEach を呼び出すのはさすがにまずいと思います
ParallelOptions 自体に MaxDegreeOfParallelism というプロパティがありますし、
ParallelOptions の TaskScheduler プロパティに以下のような自前のスケジューラーを
設定すればより柔軟な並列処理を実現できると思います
同時実行の程度を制限するタスク スケジューラを作成する
https://msdn.microsoft.com/ja-jp/library/ee789351(v=vs.100).aspx
>>802
それは確かにw
完成したソフトによって得られる利益よりソフトを作るコストのほうが大きくなってしまったら
意味がないですからね
(ただしソフトによって得られる利益には開発者のスキルアップも含まれる・・・と言ってみたりw)
804デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/22(日) 00:48:52.21ID:qjdpSLXF0 >>801
7zip使ってます
スレチになるけど
mmtは一つの処理をマルチに実行するものではないでしょうか
圧縮形式は決まってなく複数あるので7zipを使用してます
zip rar lzh以外にも色々
7zip使ってます
スレチになるけど
mmtは一つの処理をマルチに実行するものではないでしょうか
圧縮形式は決まってなく複数あるので7zipを使用してます
zip rar lzh以外にも色々
805デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/22(日) 00:51:33.52ID:qjdpSLXF0806デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/22(日) 00:54:31.49ID:IU6x2eOV0 >>804
> mmtは一つの処理をマルチに実行するものではないでしょうか
その通りです
したいことが「進捗状況を表示できるようにすること」と「並列化により処理時間を短縮すること」
だとすれば、それで問題ない(というかむしろその方が望ましい)の思うのですがいかがでしょうか?
> mmtは一つの処理をマルチに実行するものではないでしょうか
その通りです
したいことが「進捗状況を表示できるようにすること」と「並列化により処理時間を短縮すること」
だとすれば、それで問題ない(というかむしろその方が望ましい)の思うのですがいかがでしょうか?
807デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/22(日) 00:59:41.83ID:IU6x2eOV0 >>805
MaxDegreeOfParallelism を使ってらっしゃるなら
とりあえず致命的にまずいことはないと思います
ただ、CPU だけじゃなく、同時に8つのファイルの読み書きを
求められる HDD さんの気持ちも考えてあげて・・・w
MaxDegreeOfParallelism を使ってらっしゃるなら
とりあえず致命的にまずいことはないと思います
ただ、CPU だけじゃなく、同時に8つのファイルの読み書きを
求められる HDD さんの気持ちも考えてあげて・・・w
808デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/22(日) 01:01:31.55ID:qjdpSLXF0 >>806
後続の加工処理もありエラー監視も含むので進捗知りたいです
後続の加工処理もありエラー監視も含むので進捗知りたいです
809デフォルトの名無しさん (ワッチョイ 9f7f-0FgR)
2018/07/22(日) 01:03:03.89ID:SZ8yn9810 >>798
localFinallyよりasync/awaitの方が分かりやすいと思う。
private async void button1_Click( object sender, EventArgs e )
{
MessageBox.Show( "このメッセージは必ず表示される" );
await Task.Run( () =>
{
Parallel.ForEach( Enumerable.Repeat( 0, 2 ), i => Invoke( new Action( () => { } ) ) );
} );
MessageBox.Show( "デッドロックするとこのメッセージは表示されない" );
}
localFinallyよりasync/awaitの方が分かりやすいと思う。
private async void button1_Click( object sender, EventArgs e )
{
MessageBox.Show( "このメッセージは必ず表示される" );
await Task.Run( () =>
{
Parallel.ForEach( Enumerable.Repeat( 0, 2 ), i => Invoke( new Action( () => { } ) ) );
} );
MessageBox.Show( "デッドロックするとこのメッセージは表示されない" );
}
810デフォルトの名無しさん (アウアウウー Sadb-rtlg)
2018/07/22(日) 01:04:00.97ID:gDKcX53ba makefile使えば?
数行のMakefile書いて make -j8 するだけだよ
数行のMakefile書いて make -j8 するだけだよ
811デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/22(日) 01:04:22.38ID:qjdpSLXF0812デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/22(日) 01:18:41.37ID:IU6x2eOV0 >>808
Parallel.ForEach を使わなくてもそれはできると思うのですがいかがでしょうか?
>>809
確かにおっしゃる通りですね
後は好みの問題ですが、やはり私は1行ごとに Invoke するよりも
パフォーマンス的に有利な localFinally や更新処理の切り出しを推したいですw
>>811
なるほど!そうすれば外部ツールを使っても HDD へのアクセスだけ別に処理できますね
ただ、HDD へのアクセスを別にしようという意識をお持ちで、それだけのスキルもあるのなら、
外部ツールにこだわる必要はないのでは・・・という気もします
あと、メモリは HDD よりはずっと速いですが、CPU キャッシュとかの関係でやっぱり
8 個のファイルを同時に読み出すよりは1つずつの方が良いような気がします
Parallel.ForEach を使わなくてもそれはできると思うのですがいかがでしょうか?
>>809
確かにおっしゃる通りですね
後は好みの問題ですが、やはり私は1行ごとに Invoke するよりも
パフォーマンス的に有利な localFinally や更新処理の切り出しを推したいですw
>>811
なるほど!そうすれば外部ツールを使っても HDD へのアクセスだけ別に処理できますね
ただ、HDD へのアクセスを別にしようという意識をお持ちで、それだけのスキルもあるのなら、
外部ツールにこだわる必要はないのでは・・・という気もします
あと、メモリは HDD よりはずっと速いですが、CPU キャッシュとかの関係でやっぱり
8 個のファイルを同時に読み出すよりは1つずつの方が良いような気がします
813デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/22(日) 01:27:28.49ID:IU6x2eOV0814デフォルトの名無しさん (ワッチョイ ff81-MwhK)
2018/07/22(日) 01:35:51.92ID:eU7Qw5rc0 そんな処理速度気にするなら複数PC用意できたりしないのかな?
たぶん内製ツールだと思うけど、そういうのって長期保守とかしないならシンプルでさくっとやれる方向を模索したほうがいい気が…
研究開発兼ねてとかだったらいいんだけど
たぶん内製ツールだと思うけど、そういうのって長期保守とかしないならシンプルでさくっとやれる方向を模索したほうがいい気が…
研究開発兼ねてとかだったらいいんだけど
815デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/22(日) 01:43:37.75ID:qjdpSLXF0816デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/22(日) 01:44:34.84ID:qjdpSLXF0 ほな寝ます。詳しくありがとうございました!
もしかしたら明日もっとやべーかもです
もしかしたら明日もっとやべーかもです
817デフォルトの名無しさん (ワンミングク MM7f-ArLl)
2018/07/22(日) 01:59:21.48ID:J1Nh86LOM var block = new ActionBlock<ZipOpParam>(
async (param) => {
await ExecuteZipOpAsync(param);
InvokeUpdateUi(param);
},
new ExecutionDataflowBlockOptions {
MaxDegreeOfParallelism = 8
});
foreach(var p in zipOpParams)
block.Post(p);
block.Complete();
await block.Completion;
async (param) => {
await ExecuteZipOpAsync(param);
InvokeUpdateUi(param);
},
new ExecutionDataflowBlockOptions {
MaxDegreeOfParallelism = 8
});
foreach(var p in zipOpParams)
block.Post(p);
block.Complete();
await block.Completion;
818デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/22(日) 03:07:13.11ID:IU6x2eOV0 >>815
> そうです、最も投げやすく勝手にマルチしてくれる便利なParallelさんって聞いて使ってるます
これは私も同じように認識しています
> cpuキャッシュとか考慮せずマルチ=高速って誤認識で走ってきて
これは場合によりけりだと思います
特に今回のように外部ツール側でマルチスレッドにできる場合はツールの呼び出し側では
余計なことをせず外部ツールに任せたほうが高速になる場合が多いと思います
>>817
C# で並列処理を行うならこれは一つの解決策になりそうですね
別の解決策として、新たに参照を追加する必要のない↓の方法とかどうでしょう?
var tasks = new List<Task>();
foreach (var param in zipOpParams)
{
if (tasks.Count == 8) tasks.Remove(await Task.WhenAny(tasks));
tasks.Add(ExecuteZipOpAsync(param).ContinueWith(
_ => InvokeUpdateUi(param),
TaskScheduler.FromCurrentSynchronizationContext()));
}
await Task.WhenAll(tasks);
> そうです、最も投げやすく勝手にマルチしてくれる便利なParallelさんって聞いて使ってるます
これは私も同じように認識しています
> cpuキャッシュとか考慮せずマルチ=高速って誤認識で走ってきて
これは場合によりけりだと思います
特に今回のように外部ツール側でマルチスレッドにできる場合はツールの呼び出し側では
余計なことをせず外部ツールに任せたほうが高速になる場合が多いと思います
>>817
C# で並列処理を行うならこれは一つの解決策になりそうですね
別の解決策として、新たに参照を追加する必要のない↓の方法とかどうでしょう?
var tasks = new List<Task>();
foreach (var param in zipOpParams)
{
if (tasks.Count == 8) tasks.Remove(await Task.WhenAny(tasks));
tasks.Add(ExecuteZipOpAsync(param).ContinueWith(
_ => InvokeUpdateUi(param),
TaskScheduler.FromCurrentSynchronizationContext()));
}
await Task.WhenAll(tasks);
819デフォルトの名無しさん (ワッチョイ 9fe3-ol3M)
2018/07/22(日) 09:28:10.63ID:e8tLYzcQ0 違うexeキックすれば終わりなんやで?
820デフォルトの名無しさん (ワッチョイ d763-ylAy)
2018/07/22(日) 13:48:56.26ID:dLVAOvzX0 オブジェクト指向について勉強しようと思い、クラスを複数作って実行しようとしたら実行ボタンがプロセスにアタッチというよく分からない物に代わりビルドなども出来なくなってしまいました
どうしたら元に戻せるでしょうか
どうしたら元に戻せるでしょうか
821デフォルトの名無しさん (ラクッペ MM0b-3H7b)
2018/07/22(日) 15:37:48.37ID:X/YKRg9/M 参考にした資料がそう(実行ボタンをプロセスにアタッチ)しろと書いているなら
その手法でトラブった時の解決法も資料に書いてあるのでは
提示されたくらいの情報でここで帰ってくる答えは
「ゴミは捨てて作り直せ」
「一旦オブジェクト指向についての記憶を消せ」
だと思う
その手法でトラブった時の解決法も資料に書いてあるのでは
提示されたくらいの情報でここで帰ってくる答えは
「ゴミは捨てて作り直せ」
「一旦オブジェクト指向についての記憶を消せ」
だと思う
822デフォルトの名無しさん (ワッチョイ d763-ylAy)
2018/07/22(日) 19:34:11.94ID:dLVAOvzX0 このように実行ボタンがアタッチ…となりビルドも行えなくなってしまっています…
プログラムは「確かな力が身に付くc#超入門」から取っていて特にプロセスにアタッチに関する記述も無いので恐らく設定どこか変に弄ってしまったのかと思うのですが…
https://i.imgur.com/QK8r2yI.jpg
プログラムは「確かな力が身に付くc#超入門」から取っていて特にプロセスにアタッチに関する記述も無いので恐らく設定どこか変に弄ってしまったのかと思うのですが…
https://i.imgur.com/QK8r2yI.jpg
823デフォルトの名無しさん (ワッチョイ 9fd2-4ryk)
2018/07/22(日) 19:59:19.28ID:zgYMpfBL0 >>822
ソリューションエクスプローラーで当該プロジェクトを右クリック→スタートアッププロジェクトに設定(みたいなやつ)を選択
ソリューションエクスプローラーで当該プロジェクトを右クリック→スタートアッププロジェクトに設定(みたいなやつ)を選択
824デフォルトの名無しさん (ワッチョイ ff9a-Z9Wx)
2018/07/22(日) 20:02:21.74ID:2+gJNW3/0825デフォルトの名無しさん (ワッチョイ d763-ylAy)
2018/07/22(日) 20:13:04.82ID:dLVAOvzX0 >>823
やってみたのですがそれらしき項目がありませんでした…
やってみたのですがそれらしき項目がありませんでした…
826デフォルトの名無しさん (ワッチョイ d763-ylAy)
2018/07/22(日) 20:13:36.52ID:dLVAOvzX0 >>824
なるほどありがとうございます vsのスレで聞いてきます
なるほどありがとうございます vsのスレで聞いてきます
827デフォルトの名無しさん (ワッチョイ ff81-5o+W)
2018/07/23(月) 00:19:07.43ID:glq8mOZ10 revertしろや。意味もわからんだろうがな。
828デフォルトの名無しさん (ワッチョイ d763-ylAy)
2018/07/23(月) 01:08:12.51ID:7plYbgct0 >>827
じゃあなぜそれを言ったのでしょうか…
じゃあなぜそれを言ったのでしょうか…
829デフォルトの名無しさん (ワッチョイ 778a-klHS)
2018/07/23(月) 02:22:37.56ID:UcAZ2Awl0 ナチュラルマウンティング
830デフォルトの名無しさん (ブーイモ MM7b-5o+W)
2018/07/23(月) 09:39:14.18ID:GAsLkYgIM >>828
ググって勉強しろということだ
ググって勉強しろということだ
831デフォルトの名無しさん (ワッチョイ 7f9f-L2yr)
2018/07/24(火) 22:19:33.23ID:KA6Loe2t0 もしかしてASP.NETってJavaみたいなリッチで無料の拡張フレームワーク無いの?
832デフォルトの名無しさん (スププ Sdbf-KceU)
2018/07/24(火) 22:26:36.90ID:9BkrBjXcd833デフォルトの名無しさん (ワッチョイ 9f9d-gdxi)
2018/07/25(水) 13:43:12.86ID:rJjy6ITv0 きもは「リッチ」で「拡張」ってことだろ
つまりどんなものを指してるのか全く分からんがな
つまりどんなものを指してるのか全く分からんがな
834デフォルトの名無しさん (ブーイモ MMbf-rtlg)
2018/07/25(水) 14:20:20.79ID:HwnrNSAwM Classic ASP.NETは拡張性とかガン無視でMSがデフォルトで提供するお仕着せのものだけ覚りゃ一通りできるっていうドカタ向けフレームワークだぞ
Springみたいなのがお好みならASP.NET Core使え
Springみたいなのがお好みならASP.NET Core使え
835デフォルトの名無しさん (ワッチョイ 9f9d-yhN8)
2018/07/25(水) 17:37:41.34ID:rJjy6ITv0836デフォルトの名無しさん (ワッチョイ 9f9b-MwhK)
2018/07/25(水) 22:02:27.35ID:LjfK0h7i0 すれ違いで書き込んだ者ですが、こういう連続線をC♯を使って、方眼風の画面にクリックして一番近い座標点から始まり次のクリック座標点って感じで連続線を描きたいんですが、なんか参考になる本だとかサイトってありませんか?
https://i.imgur.com/Emj85bk.jpg
https://i.imgur.com/Emj85bk.jpg
837デフォルトの名無しさん (スププ Sdbf-KceU)
2018/07/25(水) 22:16:28.94ID:QC64Azkrd >>836
Graphicsクラスを使って自分で線描画するのが手っ取り早いからこのあたりかな
https://dobon.net/vb/dotnet/graphics/drawrectangle.html
Graphicsクラスを使って自分で線描画するのが手っ取り早いからこのあたりかな
https://dobon.net/vb/dotnet/graphics/drawrectangle.html
838デフォルトの名無しさん (ワッチョイ ff9a-Z9Wx)
2018/07/25(水) 22:56:32.30ID:oxjpcelO0 >>837
そのページは閉じた図形だな。
>>836
同じdobonで
折れ線を描く(DrawLinesメソッド)
https://dobon.net/vb/dotnet/graphics/drawline.html#fold
そのページは閉じた図形だな。
>>836
同じdobonで
折れ線を描く(DrawLinesメソッド)
https://dobon.net/vb/dotnet/graphics/drawline.html#fold
839デフォルトの名無しさん (ワッチョイ 7f9f-L2yr)
2018/07/25(水) 23:40:00.99ID:sTP5vmoc0 >>834
ASP.NET CoreってPrimeFacesのような無料で便利なライブラリあるの?
商用ならWijmoやTelerik色など々あるようだけど有料はちょっとね
拡張すりゃ出来るとかハンドラ書けばできるとかそんなのは当たり前の事だけど
そんな車輪の再発明に工数が出るわけがないし
ASP.NET CoreってPrimeFacesのような無料で便利なライブラリあるの?
商用ならWijmoやTelerik色など々あるようだけど有料はちょっとね
拡張すりゃ出来るとかハンドラ書けばできるとかそんなのは当たり前の事だけど
そんな車輪の再発明に工数が出るわけがないし
840デフォルトの名無しさん (スププ Sdbf-KceU)
2018/07/25(水) 23:47:26.31ID:QC64Azkrd 無料ライブラリなんかnugetでなんぼでもインストールできるだろ
841デフォルトの名無しさん (ワッチョイ c69f-5Vmn)
2018/07/26(木) 00:19:33.20ID:aLLF0qhM0 >>840
具体的にはどのパッケージですか?
具体的にはどのパッケージですか?
842デフォルトの名無しさん (アウアウウー Sa43-Hl5m)
2018/07/26(木) 07:51:00.77ID:qCaaK3zMa843デフォルトの名無しさん (オッペケ Sr47-GgdS)
2018/07/26(木) 14:29:55.52ID:ujIuVWNLr ライブラリ不要レベルやん
マウス位置とライン引くだけだし
マウス位置とライン引くだけだし
844デフォルトの名無しさん (ワッチョイ e383-tjON)
2018/07/26(木) 14:36:43.63ID:rEhHpU7y0 PictureBoxがあればなんだってできるみたいな
845デフォルトの名無しさん (ドコグロ MMea-WSYg)
2018/07/26(木) 16:41:36.62ID:EX1pNRMXM 文字の折返しさえできたら実はなんでもいい
846デフォルトの名無しさん (スププ Sd32-KqpP)
2018/07/26(木) 16:48:08.19ID:lkW5ctngd >>843
誰もライブラリ使えなんて言ってないだろ
誰もライブラリ使えなんて言ってないだろ
847デフォルトの名無しさん (ワントンキン MM42-ylDe)
2018/07/26(木) 19:08:23.29ID:BBodZQOSM >>842
そういう使い方はNGですね
サーバーサイドレンダリングが基本のフレームワークとクライアントサイドのフレームワークは常識的に考えてインピーダンスミスマッチでしょう
(primefacesのように最初からセットで設計されてるならともかく)
それならまだaspnet coreはapiに徹してangularやreact使ったほうがマシです
そういう使い方はNGですね
サーバーサイドレンダリングが基本のフレームワークとクライアントサイドのフレームワークは常識的に考えてインピーダンスミスマッチでしょう
(primefacesのように最初からセットで設計されてるならともかく)
それならまだaspnet coreはapiに徹してangularやreact使ったほうがマシです
848デフォルトの名無しさん (ブーイモ MM5b-Hl5m)
2018/07/26(木) 19:18:37.89ID:IphAgnBQM849デフォルトの名無しさん (ワッチョイ 5e8a-3ouB)
2018/07/26(木) 19:30:12.58ID:36qwSZL10 C#で、VPN経由でCiscoのL2スイッチにログインしてフォワーディングデータベースと各ポートのステータスを取得したいんですが、
簡単に解説しているサイトはないでしょうか?
クライアントを動かすPC - HUB - NATルーター - VPNルーター - ネット - VPNルーター - HUB - Ciscoルーター - 目当てのCisco L2スイッチ
ていう状態です。
簡単に解説しているサイトはないでしょうか?
クライアントを動かすPC - HUB - NATルーター - VPNルーター - ネット - VPNルーター - HUB - Ciscoルーター - 目当てのCisco L2スイッチ
ていう状態です。
850デフォルトの名無しさん (ワッチョイ 16e8-4UL4)
2018/07/26(木) 19:41:22.79ID:jgVPt9Lg0 LinQの中身ってfor文ってホント?
851デフォルトの名無しさん (ワッチョイ f317-53i4)
2018/07/26(木) 19:42:46.48ID:CSIl69XB0 アイドルグループの中身は知りません
852デフォルトの名無しさん (ワッチョイ 16e8-4UL4)
2018/07/26(木) 19:49:11.86ID:jgVPt9Lg0 LinQクラスの各メソッドの中身の味方教えてください
853デフォルトの名無しさん (スッップ Sd32-UO0F)
2018/07/26(木) 19:51:33.98ID:XPlHGtVDd >>852
github
github
854デフォルトの名無しさん (ワッチョイ d27f-J6FL)
2018/07/26(木) 19:55:09.78ID:gWAgddOO0855デフォルトの名無しさん (ワッチョイ 929d-cPc7)
2018/07/26(木) 20:49:53.68ID:X2GH2dHI0 >>847
NGかどうかはお前の都合だがな
ASP.NETでもWebFormあたりは、サーバ側とクライアント側の統合を目指してたんだよ
クライアントスクリプト一切書かなくてもAJAXできるコントロールとかまであった
だが今の流れはサーバサイドはサーバサイド、クライアントはクライアントな流れ
クライアントはすきなライブラリ使え
>それならまだaspnet coreはapiに徹して
apiに徹するのと、html出力に徹するのとどれほどの違いがあると?
NGかどうかはお前の都合だがな
ASP.NETでもWebFormあたりは、サーバ側とクライアント側の統合を目指してたんだよ
クライアントスクリプト一切書かなくてもAJAXできるコントロールとかまであった
だが今の流れはサーバサイドはサーバサイド、クライアントはクライアントな流れ
クライアントはすきなライブラリ使え
>それならまだaspnet coreはapiに徹して
apiに徹するのと、html出力に徹するのとどれほどの違いがあると?
856デフォルトの名無しさん (ワッチョイ c69f-5Vmn)
2018/07/26(木) 20:51:44.84ID:aLLF0qhM0 >>848
ASP.NET Coreと相性いいのは無いね
ASP.NET Coreと相性いいのは無いね
857デフォルトの名無しさん (ブーイモ MM32-tjON)
2018/07/26(木) 20:59:07.08ID:0BZQ2aB/M ASP.NETの問題というよりC#自体がwebのフレームワークと相性が悪いような…
おとなしくtypescript使ったほうが楽かなとは思う
おとなしくtypescript使ったほうが楽かなとは思う
858デフォルトの名無しさん (ワッチョイ c69f-5Vmn)
2018/07/26(木) 21:10:20.45ID:aLLF0qhM0 >>855
WebFormsの時からずっとだけど鯖で出力したhtmlやバックエンドの挙動を把握してJS書かないといけないからめんどくせえじゃん
なんのためにナマのhtmlを隠蔽したのかって話になる
htmlを隠蔽すると決めたなら徹底しなきゃならん
apiに徹すればクライアントはクライアントで綺麗に切れるからそんな煩わしさから開放される
WebFormsの時からずっとだけど鯖で出力したhtmlやバックエンドの挙動を把握してJS書かないといけないからめんどくせえじゃん
なんのためにナマのhtmlを隠蔽したのかって話になる
htmlを隠蔽すると決めたなら徹底しなきゃならん
apiに徹すればクライアントはクライアントで綺麗に切れるからそんな煩わしさから開放される
859デフォルトの名無しさん (ワッチョイ 4b9e-h/lP)
2018/07/26(木) 21:25:20.81ID:+zykdZnW0 LinQ は、Rails のQuery object と同じだろ
where 何々
order by 何々
別々に書いた文字列を、1つのSQL 文にまとめて、DB に問い合わせする
where 何々
order by 何々
別々に書いた文字列を、1つのSQL 文にまとめて、DB に問い合わせする
860デフォルトの名無しさん (ワッチョイ 92d2-UO0F)
2018/07/26(木) 21:32:16.74ID:Q5F+5vhQ0 >>857
ちょっと何言ってるかわからない
ちょっと何言ってるかわからない
861デフォルトの名無しさん (ワッチョイ 1680-P01o)
2018/07/26(木) 21:43:03.68ID:wePnpHti0862デフォルトの名無しさん (ワッチョイ 16e8-53i4)
2018/07/26(木) 21:45:25.99ID:F57VHmfS0 ソリューションエクスプローラーで.csファイルのなめえ変えてもデバッグできる?データ壊れない?
863デフォルトの名無しさん (ブーイモ MM32-tjON)
2018/07/26(木) 21:47:47.65ID:0BZQ2aB/M864デフォルトの名無しさん (ワッチョイ 16e8-53i4)
2018/07/26(木) 21:50:46.39ID:F57VHmfS0865デフォルトの名無しさん (ワッチョイ e383-tjON)
2018/07/26(木) 21:51:53.07ID:rEhHpU7y0 こういうハッキングの匂いがするやつは回答しないほうがいい
866デフォルトの名無しさん (ワッチョイ d27f-J6FL)
2018/07/26(木) 21:51:55.20ID:gWAgddOO0 >>862
ソリューションエクスプローラー上での名前の変更は問題なく出来る
ソリューションエクスプローラー上での名前の変更は問題なく出来る
867デフォルトの名無しさん (ブーイモ MM32-tjON)
2018/07/26(木) 21:53:30.55ID:0BZQ2aB/M git使わなくてもソリューションのフォルダごとコピーかzip圧縮でも十分だけど
868デフォルトの名無しさん (ワッチョイ 16e8-53i4)
2018/07/26(木) 21:55:22.46ID:F57VHmfS0869デフォルトの名無しさん (ワッチョイ 16e8-53i4)
2018/07/26(木) 21:59:28.86ID:F57VHmfS0870デフォルトの名無しさん (ワッチョイ 238a-nbnO)
2018/07/26(木) 22:20:23.27ID:uwMXaYNj0 >>868
javaとは違うんだよ
javaとは違うんだよ
871デフォルトの名無しさん (ワッチョイ b7d2-dWiX)
2018/07/26(木) 22:27:27.51ID:ySl3KkZ10 >>867
gitでもフォルダコピーでも、自由に試し放題なのは同じだが
gitだとフォルダコピーに該当する操作が一瞬なんだよね
フォルダコピーだとある程度大きいプロジェクトになるとプログレスバーを待たなきゃならん
gitでもフォルダコピーでも、自由に試し放題なのは同じだが
gitだとフォルダコピーに該当する操作が一瞬なんだよね
フォルダコピーだとある程度大きいプロジェクトになるとプログレスバーを待たなきゃならん
872デフォルトの名無しさん (ワッチョイ c69f-5Vmn)
2018/07/28(土) 08:21:01.22ID:IX5bbTr/0 DataAnnotationsの属性の組み合わせを新しい属性として定義することはできますか?
例えばFooIdは20文字以下で"^[A-Z]{5}-\d+$"にマッチしなければなりません
StringLengthAttributeとRegularExpressionAttributeを組み合わせて
FooIdAttribute := StringLengthAttribute(20) and RegularExpressionAttribute(@"^[A-Z]{5}-\d+$")
といったニュアンスでFooIdAttributeを定義したいのですが方法を探してもまったく見つかりません
もちろんValidationAttributeを継承してFooIdAttributeを作るだけなら出来ました
しかしこの方法ではASP.NETのクライアント検証やEFのコードファーストがStringLengthAttributeとRegularExpressionAttributeを認識してくれません
すべてを諦めて
「モデルプロパティとしてFooIdを使う時はstring型でプロパティを定義してStringLength(20)とRegularExpressionAttribute(@"^[A-Z]{5}-\d+$")をコピペすること」
といった実装ルールを定めてDRY違反には目をつぶるしかないのでしょうか
例えばFooIdは20文字以下で"^[A-Z]{5}-\d+$"にマッチしなければなりません
StringLengthAttributeとRegularExpressionAttributeを組み合わせて
FooIdAttribute := StringLengthAttribute(20) and RegularExpressionAttribute(@"^[A-Z]{5}-\d+$")
といったニュアンスでFooIdAttributeを定義したいのですが方法を探してもまったく見つかりません
もちろんValidationAttributeを継承してFooIdAttributeを作るだけなら出来ました
しかしこの方法ではASP.NETのクライアント検証やEFのコードファーストがStringLengthAttributeとRegularExpressionAttributeを認識してくれません
すべてを諦めて
「モデルプロパティとしてFooIdを使う時はstring型でプロパティを定義してStringLength(20)とRegularExpressionAttribute(@"^[A-Z]{5}-\d+$")をコピペすること」
といった実装ルールを定めてDRY違反には目をつぶるしかないのでしょうか
873デフォルトの名無しさん (ワンミングク MM42-ylDe)
2018/07/28(土) 09:32:16.19ID:rUA3L/4NM バリデーションに限った話ではなく属性のMixinができないのは言語仕様の欠陥
多重継承が可能なら悩むことなかったんだけど...
まあC# 9ではMixinがサポートされるらしいのでそれ以後は簡単になるだろう
それまでは諦めてコピペする以外ない
多重継承が可能なら悩むことなかったんだけど...
まあC# 9ではMixinがサポートされるらしいのでそれ以後は簡単になるだろう
それまでは諦めてコピペする以外ない
874デフォルトの名無しさん (アウアウウー Sa43-Hl5m)
2018/07/28(土) 09:50:11.05ID:Z2VlFyTVa パラメータだけconst stringにしとけ
875デフォルトの名無しさん (ワッチョイ 27b3-53i4)
2018/07/28(土) 16:04:28.18ID:xL2l+Gb50876デフォルトの名無しさん (ワンミングク MM42-ylDe)
2018/07/28(土) 16:54:36.21ID:Ls9tzaL9M >>875
ValidationAttributeはサーバーサイド検証はできるけどクライアントサイド検証やEFには効果がない(追加コードを書かなければ)
属性Mixin的なことができれば追加コードを何も書かずにそれらの収穫を得ることができたはずなんだ
ValidationAttributeはサーバーサイド検証はできるけどクライアントサイド検証やEFには効果がない(追加コードを書かなければ)
属性Mixin的なことができれば追加コードを何も書かずにそれらの収穫を得ることができたはずなんだ
877デフォルトの名無しさん (スププ Sd32-+DHK)
2018/07/28(土) 17:41:04.66ID:PBzjh5L/d878デフォルトの名無しさん (ワンミングク MM42-ylDe)
2018/07/28(土) 19:08:15.95ID:Ls9tzaL9M879デフォルトの名無しさん (アウアウウー Sa43-tjON)
2018/07/28(土) 21:33:59.64ID:ooB9UphUa 例がおかしいせいか正規表現で何とかしろって最初に見たとき思った
880デフォルトの名無しさん (ワッチョイ c69f-5Vmn)
2018/07/28(土) 21:46:45.51ID:IX5bbTr/0 TypeDescriptorで動的属性にしたけどダメだった
このFWカスタムしにくい
このFWカスタムしにくい
881デフォルトの名無しさん (ワッチョイ d29b-ILTU)
2018/07/29(日) 17:20:08.97ID:1IN8lfJM0 VB6のプログラムをC♯で書き直しをやってるんですが、複数あるフォームで毎度使うグローバル変数や定数ってどうしたら良いですか?
882デフォルトの名無しさん (ワッチョイ 02eb-x//5)
2018/07/29(日) 17:39:04.96ID:jELBj7vj0 それらを管理する構造体かクラスを作るのが良いでしょう
ただ、作り始める前に現代風のプログラミングの仕組みを勉強したほうが良いんじゃないかな
変数のスコープの問題として解決しようとする時点で基礎が出来ていない気がしてしまう
ただ、作り始める前に現代風のプログラミングの仕組みを勉強したほうが良いんじゃないかな
変数のスコープの問題として解決しようとする時点で基礎が出来ていない気がしてしまう
883デフォルトの名無しさん (ワッチョイ 929d-cPc7)
2018/07/29(日) 17:48:24.83ID:OsBw9Csr0884デフォルトの名無しさん (ワッチョイ b7d2-dWiX)
2018/07/29(日) 18:02:58.75ID:qyyXPeAu0 >>881
もう親フォームのpublicに置いちゃえば?
もう親フォームのpublicに置いちゃえば?
885デフォルトの名無しさん (アウアウウー Sa43-tjON)
2018/07/29(日) 19:28:22.30ID:w8CG8UOca Appに持たせる
886デフォルトの名無しさん (ワッチョイ d29b-ILTU)
2018/07/29(日) 19:28:43.90ID:1IN8lfJM0 親フォームにpublicに置くのがベターなのかね?楽でいいし。
887デフォルトの名無しさん (ワッチョイ 6fb5-WEB5)
2018/07/29(日) 19:32:07.48ID:0glkw7L10 普通は目的や用途に分けてベースクラスと機能クラスに分けて配置するだろ。
888デフォルトの名無しさん (アウアウウー Sa43-tjON)
2018/07/29(日) 19:32:52.42ID:w8CG8UOca 定数はクラスに持たせるべき
グローバル変数というものは存在しない
グローバル変数というものは存在しない
889デフォルトの名無しさん (ワッチョイ b39f-Fk8t)
2018/07/29(日) 19:36:39.97ID:LP0lwlvd0 public static read onlyをまとめたクラス1個作ればよくね?
890デフォルトの名無しさん (ワッチョイ d29b-ILTU)
2018/07/29(日) 19:42:49.43ID:1IN8lfJM0 やっぱクラスか。
891デフォルトの名無しさん (ワッチョイ 238a-nbnO)
2018/07/29(日) 22:10:08.10ID:UEZe9Eeh0 別に構造体でも良いのよ
892デフォルトの名無しさん (ワッチョイ 12d2-gjV1)
2018/07/29(日) 22:38:15.47ID:F0wMdqEY0 標準モジュール→Public Shared Class
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★2 [BFU★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 [ぐれ★]
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 [Hitzeschleier★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 中国高官と話す外務省局長の表情、やばい ★2 [175344491]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 【悲報】日本人「日本が中国と戦争になったら世界中の国が応援してくれるぞ!」 [616817505]
- 小野田経済安保相「すぐに経済的威圧するところへの依存はリスク」😲 [861717324]
- 日本政府「高市総理の発言は問題ないと伝え、中国総領事のSNS投稿は問題があると中国に伝えました😊」 [931948549]
- 【ほんこん悲報】吉本新喜劇の中国公演が中止に! [523957489]
