[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 06/24 07:55 / Filesize : 289 KB / Number-of Response : 1050
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 19:32:42.28 ID:70UTtyrn0.net]
「どんなにくだらない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/
■コードを貼る場合は↓を使いましょう。
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
referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

809 名前:Finally の引数をとるオーバーロードを使ってみたらどうでしょう? []
[ここ壊れてます]

810 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:10:44.76 ID:H6KFndt4M.net]
>>768
君のレスを見るといつも思うが、こういう特徴のある口調のレスを繰り返す人には自分自身を見る自意識がないのかね

811 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:10:59.84 ID:nH897ECr0.net]
invokeするか、ContextにPostするしか無いんじゃないかな

812 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:22:09.68 ID:3bWsh9tI0.net]
>>774
>>774

813 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:22:10.55 ID://qCwfF7a.net]
爆発w

814 名前:デフォルトの名無しさん [2018/07/21(土) 20:24:00.77 ID:rsQP0F780.net]
>>772
>>773
>>775
Invokeでググりました
まさにこの疑問を解決するための機能でした
有難う御座います

815 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:35:04.73 ID:BEEMYUE30.net]
私は >>773 ですが Invoke について自分があまり良く分かってない気がしてきたので
詳しい方がいらっしゃったら教えてください

UIスレッドで Parallel.ForEach を呼ぶとUIスレッドをつかんだまま並列処理が実行されて、
その並列処理のスレッドで Invoke を使うとデッドロックしてしまう気がするのですが
実際はそういうことはないのでしょうか?

816 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:36:04.76 ID:aw31/LTY0.net]
マルチスレッドにしてInvokeしまくると結局パフォーマンスがガタ落ちしたりするがな

817 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:15:58.91 ID:BEEMYUE30.net]
>>779 です
WPF で下のようなコードを実行してみたらやっぱりデッドロックしてしまいました
Invoke はそれなりに慎重に使わないといけないみたいです

void Button_Click(object sender, RoutedEventArgs e)
{
  MessageBox.Show("このメッセージは必ず表示される");
  Parallel.ForEach(Enumerable.Repeat(0, 2), i => Dispatcher.Invoke(() => { }));
  MessageBox.Show("デッドロックするとこのメッセージは表示されない");
}

ちなみに Enumerable.Repeat(0, 2) の部分を変えると以下のような挙動でした

Enumerable.Repeat(0, 0) に変える → デッドロックしない
Enumerable.Repeat(0, 1) に変える → デッドロックする
new int[] { } に変える → デッドロックしない
new int[] { 0 } に変える → デッドロックしない
new int[] { 0, 0 } に変える → デッドロックする



818 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:16:52.59 ID:1oayVCQs0.net]
>>778
いいってことよ(´・ω・`)b

819 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:18:17.40 ID:nH897ECr0.net]
>>779
並列処理はUIスレッドではないスレッドで行われるよ。
いや、UIスレッドで行われるとは限らない、と言う言い方の方が正しいかな。
UIスレッドを掴んだままの意味がわからんが、挙動が謎なら、ブレークポイントつけて実行して、どのスレッドが何をしてるかを把握してはいかがだろうか。
今どのスレッドを使ってるかは表示されてるから。

820 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:20:54.98 ID:nH897ECr0.net]
WPFかあ

821 名前:デフォルトの名無しさん [2018/07/21(土) 21:25:21.58 ID:VW1YO4fA0.net]
Windows版VSCodeで、monoを構文解析用のコンパイラとして指定することってできないのかな?

Unityの.Net4.0用プロジェクトで、数ヶ月前までは、.Net3.5用のSystem.Data.DLLを読み込んでくれたのにさあ
VisualStudioを更新したら構文解析用のコンパイラが変わったのか、古い.net3.5用のDLLを読み込んでくれなくて赤波線だらけになっちゃったぜ
4.0用のDLLもあるわけだけど、それを入れるとUnityのmonoの方でなぜかエラーを起こすし・・・どうしたら良いものか・・・・

822 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:33:11.65 ID:BEEMYUE30.net]
>>783-784
レスありがとうございます

> いや、UIスレッドで行われるとは限らない、と言う言い方の方が正しいかな。
>>781 で new int[] { 0 } だとデッドロックしないあたり、まさにそんな感じですね

> WPFかあ
>>769 でデータグリッドと書かれていたので、
今の Windows フォームなら DataGrid ではなく DataGridView かなと思って
WPF の方で試してしまいました(汗
Windows フォームだと挙動が変わるならそれも知っておきたいので
今からそっちでも試してみ

823 名前:ます []
[ここ壊れてます]

824 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:36:50.95 ID:BEEMYUE30.net]
Windows フォームで試してみたのでご報告を。
以下のコードを実行してみた結果、やっぱりデッドロックしてしまいました
Enumerable.Repeat(0, 2) を変えたときの挙動も >>781 と同じでした

void button1_Click(object sender, EventArgs e)
{
  MessageBox.Show("このメッセージは必ず表示される");
  Parallel.ForEach(Enumerable.Repeat(0, 2), i => Invoke(new Action(() => { })));
  MessageBox.Show("デッドロックするとこのメッセージは表示されない");
}

825 名前:デフォルトの名無しさん [2018/07/21(土) 22:26:34.46 ID:rsQP0F780.net]
えーわからん…
ちなみにフォームですビューです
つまりフォームアプリでParallel処理内でinvokeってそもそも悪手なんでしょうか
それともThread生成してその中でParallelすれば良かったり…?これはすごい破綻してる気がしますが

uiスレッドから切り離した他スレッドから安全にuiを制御するなんて考えが可笑しいんでしょうか

826 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 22:44:23.68 ID:BEEMYUE30.net]
>>788
あくまで私一人の考えですが・・・

[1] Invoke を使うと >>779 に書いたような理由でデッドロックするので
 Parallel.ForEach でUIスレッドを使いたいなら >>773 のようにすべき
[2] しかし、同じく >>779 に書いたように Parallel.ForEach はUIスレッドを
 つかんだまま並列処理を行うのでデータグリッドの更新処理だけ
 Parallel.ForEach から切り出してもほとんど同じなのでは?
 (一応 localFinally 中も他のスレッドは動けるので
   そこで更新処理を行う方がいい場合もあるかもしれない)
[3] 並列処理が必要なほど大きな処理を行うなら、
 一度UIスレッドを手放す選択肢も考えてみては?

ただ、Invoke がダメだと考えている人間自体が私だけのような気もするので
他の方の意見も聞いてみたほうがいいと思います
あと、[3] に関しては場合によりけりだと思うので、
具体的な処理内容を教えていただければ私の考えをお伝えしたいと思います

827 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 22:55:07.29 ID:gktKld7A0.net]
>>787
そのコードだと、button1_Click()がずっとUIスレッドを握ったまま。
だから、Parallelの別スレッドでInvoke()しようとしてもUIスレッドに遷移出来なくて固まる。



828 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:00:46.86 ID:gktKld7A0.net]
既に>>779に書いてあったね。その通り。

829 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:10:20.56 ID:BEEMYUE30.net]
>>790-791
レスありがとうございます
>>779 の考えで正しいのか不安だったのですがお陰様で自身が持てました
他に何かおかしなことを言ってしまっていたら教えていただけると嬉しいです

>>788
>>789 はレスとしてとっ散らかっている気がしてきたので一問一答で答えてみます

> つまりフォームアプリでParallel処理内でinvokeってそもそも悪手なんでしょうか
Parallel を UI スレッドで実行する場合は悪手というか、致命的だと思います

> それともThread生成してその中でParallelすれば良かったり…?これはすごい破綻してる気がしますが
それなら期待通りの動作にはなると思います。ただ、確かにあまりいい方法ではないと思います

> uiスレッドから切り離した他スレッドから安全にuiを制御するなんて考えが可笑しいんでしょうか
正しく Invoke を使えば問題ないと思います
しかし今回の件からもわかるように、Invoke を正しく使うのはなかなか難しいようです

830 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:21:21.79 ID:R8KbBSh90.net]
.Invokeではなく.BeginInvokeを使うのはどう?

831 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:30:54.97 ID:BEEMYUE30.net]
>>793
それって
> それともThread生成してその中でParallelすれば良かったり…?
よりも更にワチャワチャする気がするのですがどうなんでしょう?

ワチャワチャって具体的にどういうことなのか
説明を求められれば頑張ってみようと思いますが、
自分の考えがあっているかも、それをうまく説明できるかどうかも
自信がないので、詳しい方の意見を聞けると嬉しいです

832 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:41:01.32 ID://qCwfF7a.net]
>>794
そんな難しい話じゃないっすよw

BeginInvokeは非同期に実行される、つまりキューにデリゲートを入れたらすぐに処理を返すので
Invokeのように自分で自分の終了を待機する状態に陥らない

833 名前:デフォルトの名無しさん [2018/07/21(土) 23:43:41.94 ID:rsQP0F780.net]
>>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("デッドロックするとこのメッセージは表示されない");
}

834 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:55:52.12 ID:BEEMYUE30.net]
>>795
レスありがとうございます
おっしゃる通りBeginInvokeはキューにデリゲートを入れたらすぐに処理を返すので
次から次へとキューが入って大変なことになりそう

835 名前:E・・と思ったのですが、
そんなに心配することではないのでしょうか

>>796
それで一応動くと思いますが、Parallel.ForEach が終わる前に
二つ目の MessageBox.Show の行に移るので注意してください
・・・というか、localFinally を使ったり更新処理だけを切り出したりはダメっぽいですか?
ダメだと考えられた理由を教えていただければ何かアイディアを提供できるかもしれません
[]
[ここ壊れてます]

836 名前:デフォルトの名無しさん [2018/07/22(日) 00:03:07.23 ID:qjdpSLXF0.net]
>>797
データグリッドビューは進捗状況を見るために更新していて
1行1スレッドで処理されて処理後にどう処理されたかをリアルタイム表示してます

ダメではなく単純に自分が分かってないだけです
この処理ならlocalFinallyが最適かもです
深く調べてみます

837 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 00:13:38.17 ID:IU6x2eOV0.net]
>>798
> データグリッドビューは進捗状況を見るために更新していて
> 1行1スレッドで処理されて処理後にどう処理されたかをリアルタイム表示してます
進捗状況の確認が必要なほど1行あたりの処理に時間がかかる理由は何でしょうか?
もしその理由が IO など、CPU 以外のところにあるのだとすれば、
Parallel.ForEach を使うこと自体を見直したほうがいいかもしれません

> この処理ならlocalFinallyが最適かもです
正直なところ、更新処理だけ切り出す方法よりも localFinally の方が
適切なケースはまれだと思います
ただ、localFinally の使い方がわかれば更新処理を Parallel.ForEach の外に
切り出す方法もわかると思うので、とりあえず調べてみて損はないと思います



838 名前:デフォルトの名無しさん [2018/07/22(日) 00:23:24.78 ID:qjdpSLXF0.net]
>>799
圧縮ファイルを解凍して中のファイルを加工して再び圧縮し直す
これで1タスクです
1ファイル200MBほどで100ファイル以上処理することが多いです
圧縮解凍、加工は外部ツールを使用しててProcessStartInfoで処理されます

839 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 00:35:58.51 ID:IU6x2eOV0.net]
>>800
なるほど〜
CPU 処理も IO もあって微妙なところですね

ちなみにその外部ツールはマルチスレッドを使うオプションはないでしょうか?
(例えば 7-zip.exe だと -mmt がそれにあたります)
もし外部ツールがマルチスレッドに対応してるなら、
並列処理はそっちに任せてしまうというのはどうでしょう?

または、外部ツールではなく SharpCompress のようなライブラリを使うことができれば、
C# によるより細かい制御も可能になると思います

840 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 00:37:18.94 ID:gDKcX53ba.net]
汎用的なものとは思えないし、動けばどうでもいいだろ
俺ならそういうのはいちいちGUI付けずにコンソールでやっちゃうな

841 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 00:45:55.06 ID:IU6x2eOV0.net]
>>800
それともう一つ、外部ツールを呼び出すのにデフォルトの ParallelOptions で
Parallel.ForEach を呼び出すのはさすがにまずいと思います
ParallelOptions 自体に MaxDegreeOfParallelism というプロパティがありますし、
ParallelOptions の TaskScheduler プロパティに以下のような自前のスケジューラーを
設定すればより柔軟な並列処理を実現できると思います

同時実行の程度を制限するタスク スケジューラを作成する
https://msdn.microsoft.com/ja-jp/library/ee789351(v=vs.100).aspx

>>802
それは確かにw
完成したソフトによって得られる利益よりソフトを作るコストのほうが大きくなってしまったら
意味がないですからね
(ただしソフトによって得られる利益には開発者のスキルアップも含まれる・・・と言ってみたりw)

842 名前:デフォルトの名無しさん [2018/07/22(日) 00:48:52.21 ID:qjdpSLXF0.net]
>>801
7zip使ってます
スレチになるけど
mmtは一つの処理をマルチに実行するものではないでしょうか

圧縮形式は決まってなく複数あるので7zipを使用してます
zip rar lzh以外にも色々

843 名前:デフォルトの名無しさん [2018/07/22(日) 00:51:33.52 ID:qjdpSLXF0.net]
>>803
タスクスケジューラー調べてみます良さそうですね

i7使用しててMaxDegreeOfParallelismは常に8で実行してます
8スレッドで画面カッチカチで処理してます
暴力です

844 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 00:54:31.49 ID:IU6x2eOV0.net]
>>804

845 名前:
> mmtは一つの処理をマルチに実行するものではないでしょうか
その通りです
したいことが「進捗状況を表示できるようにすること」と「並列化により処理時間を短縮すること」
だとすれば、それで問題ない(というかむしろその方が望ましい)の思うのですがいかがでしょうか?
[]
[ここ壊れてます]

846 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 00:59:41.83 ID:IU6x2eOV0.net]
>>805
MaxDegreeOfParallelism を使ってらっしゃるなら
とりあえず致命的にまずいことはないと思います
ただ、CPU だけじゃなく、同時に8つのファイルの読み書きを
求められる HDD さんの気持ちも考えてあげて・・・w

847 名前:デフォルトの名無しさん [2018/07/22(日) 01:01:31.55 ID:qjdpSLXF0.net]
>>806
後続の加工処理もありエラー監視も含むので進捗知りたいです



848 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 01:03:03.89 ID:SZ8yn9810.net]
>>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( "デッドロックするとこのメッセージは表示されない" );
}

849 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 01:04:00.97 ID:gDKcX53ba.net]
makefile使えば?
数行のMakefile書いて make -j8 するだけだよ

850 名前:デフォルトの名無しさん [2018/07/22(日) 01:04:22.38 ID:qjdpSLXF0.net]
>>807
解答先は8GBのRamディスクです
メモリに物理ファイルおいてでここで加工して再圧縮してその後HDDに移動させてます

851 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 01:18:41.37 ID:IU6x2eOV0.net]
>>808
Parallel.ForEach を使わなくてもそれはできると思うのですがいかがでしょうか?

>>809
確かにおっしゃる通りですね
後は好みの問題ですが、やはり私は1行ごとに Invoke するよりも
パフォーマンス的に有利な localFinally や更新処理の切り出しを推したいですw

>>811
なるほど!そうすれば外部ツールを使っても HDD へのアクセスだけ別に処理できますね
ただ、HDD へのアクセスを別にしようという意識をお持ちで、それだけのスキルもあるのなら、
外部ツールにこだわる必要はないのでは・・・という気もします
あと、メモリは HDD よりはずっと速いですが、CPU キャッシュとかの関係でやっぱり
8 個のファイルを同時に読み出すよりは1つずつの方が良いような気がします

852 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 01:27:28.49 ID:IU6x2eOV0.net]
>>809 >>812
いや、でも進捗状況を表示するとなると結局どこかで await は使うことになりそうですね
ただ私としては >>800 のような処理なら Parallel.ForEach は必要ないと考えていて、

foreach (ファイルのループ)
{
  foreach (進捗状況のループ)
  {
    await (進捗状況の更新待ち);
    (進捗状況を画面に反映);
  }
  (1ファイルの完了を画面に反映);
}

のような感じで十分だと思うのですが、どんなもんでしょうか?

853 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 01:35:51.92 ID:eU7Qw5rc0.net]
そんな処理速度気にするなら複数PC用意できたりしないのかな?
たぶん内製ツールだと思うけど、そういうのって長期保守とかしないならシンプルでさくっとやれる方向を模索したほうがいい気が…
研究開発兼ねてとかだったらいいんだけど

854 名前:デフォルトの名無しさん [2018/07/22(日) 01:43:37.75 ID:qjdpSLXF0.net]
>>812
そうです、最も投げやすく勝手にマルチしてくれる便利なParallelさんって聞いて使ってるます
別の手段があればコレに拘ることはないと思ってます

>>813
cpuキャッシュとか考慮せずマルチ=高速って誤認識で走ってきて
その中で最適化してきたので
localfinally使用したときと
1ファイルの処理の差も検証してみたいと思います

>>814
ただの趣味なんですPC一台で
複雑でも効

855 名前:果があれば試したいと考えています []
[ここ壊れてます]

856 名前:デフォルトの名無しさん [2018/07/22(日) 01:44:34.84 ID:qjdpSLXF0.net]
ほな寝ます。詳しくありがとうございました!
もしかしたら明日もっとやべーかもです

857 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 01:59:21.48 ID:J1Nh86LOM.net]
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;



858 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 03:07:13.11 ID:IU6x2eOV0.net]
>>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);

859 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 09:28:10.63 ID:e8tLYzcQ0.net]
違うexeキックすれば終わりなんやで?

860 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 13:48:56.26 ID:dLVAOvzX0.net]
オブジェクト指向について勉強しようと思い、クラスを複数作って実行しようとしたら実行ボタンがプロセスにアタッチというよく分からない物に代わりビルドなども出来なくなってしまいました
どうしたら元に戻せるでしょうか

861 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 15:37:48.37 ID:X/YKRg9/M.net]
参考にした資料がそう(実行ボタンをプロセスにアタッチ)しろと書いているなら
その手法でトラブった時の解決法も資料に書いてあるのでは

提示されたくらいの情報でここで帰ってくる答えは
「ゴミは捨てて作り直せ」
「一旦オブジェクト指向についての記憶を消せ」
だと思う

862 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 19:34:11.94 ID:dLVAOvzX0.net]
このように実行ボタンがアタッチ…となりビルドも行えなくなってしまっています…
プログラムは「確かな力が身に付くc#超入門」から取っていて特にプロセスにアタッチに関する記述も無いので恐らく設定どこか変に弄ってしまったのかと思うのですが…
https://i.imgur.com/QK8r2yI.jpg

863 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 19:59:19.28 ID:zgYMpfBL0.net]
>>822
ソリューションエクスプローラーで当該プロジェクトを右クリック→スタートアッププロジェクトに設定(みたいなやつ)を選択

864 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 20:02:21.74 ID:2+gJNW3/0.net]
>>822
言語じゃなくVisual Studioのスレで聞かないと
それはプロジェクトが読み込まれておらずソースだけ読み込まれている状態

865 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 20:13:04.82 ID:dLVAOvzX0.net]
>>823
やってみたのですがそれらしき項目がありませんでした…

866 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 20:13:36.52 ID:dLVAOvzX0.net]
>>824
なるほどありがとうございます vsのスレで聞いてきます

867 名前:デフォルトの名無しさん [2018/07/23(月) 00:19:07.43 ID:glq8mOZ10.net]
revertしろや。意味もわからんだろうがな。



868 名前:デフォルトの名無しさん mailto:sage [2018/07/23(月) 01:08:12.51 ID:7plYbgct0.net]
>>827
じゃあなぜそれを言ったのでしょうか…

869 名前:デフォルトの名無しさん mailto:sage [2018/07/23(月) 02:22:37.56 ID:UcAZ2Awl0.net]
ナチュラルマウンティング

870 名前:デフォルトの名無しさん [2018/07/23(月) 09:39:14.18 ID:GAsLkYgIM.net]
>>828
ググって勉強しろということだ

871 名前:デフォルトの名無しさん mailto:sage [2018/07/24(火) 22:19:33.23 ID:KA6Loe2t0.net]
もしかしてASP.NETってJavaみたいなリッチで無料の拡張フレームワーク無いの?

872 名前:デフォルトの名無しさん mailto:sage [2018/07/24(火) 22:26:36.90 ID:9BkrBjXcd.net]
>>831

ASP.NET自体が無料のフレームワークだろ

873 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 13:43:12.86 ID:rJjy6ITv0.net]
きもは「リッチ」で「拡張」ってことだろ
つまりどんなものを指してるのか全く分からんがな

874 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 14:20:20.79 ID:HwnrNSAwM.net]
Classic ASP.NETは拡張性とかガン無視でMSがデフォルトで提供するお仕着せのものだけ覚りゃ一通りできるっていうドカタ向けフレームワークだぞ
Springみたいなのがお好みならASP.NET Core使え

875 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 17:37:41.34 ID:rJjy6ITv0.net]
>>834
Classic ASP.NETがどのバージョンを指してるか知らんが拡張性無視とか笑わせる
HTTPハンドラとかモジュールとか自作したらほぼすべてカスタムできたわけだが

876 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 22:02:27.35 ID:LjfK0h7i0.net]
すれ違いで書き込んだ者ですが、こういう連続線をC♯を使って、方眼風の画面にクリックして一番近い座標点から始まり次のクリック座標点って感じで連続線を描きたいんですが、なんか参考になる本だとかサイトってありませんか?
https://i.imgur.com/Emj85bk.jpg

877 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 22:16:28.94 ID:QC64Azkrd.net]
>>836
Graphicsクラスを使って自分で線描画するのが手っ取り早いからこのあたりかな
https://dobon.net/vb/dotnet/graphics/drawrectangle.html



878 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 22:56:32.30 ID:oxjpcelO0.net]
>>837
そのページは閉じた図形だな。
>>836
同じdobonで
折れ線を描く(DrawLinesメソッド)
https://dobon.net/vb/dotnet/graphics/drawline.html#fold

879 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 23:40:00.99 ID:sTP5vmoc0.net]
>>834
ASP.NET CoreってPrimeFacesのような無料で便利なライブラリあるの?
商用ならWijmoやTelerik色など々あるようだけど有料はちょっとね
拡張すりゃ出来るとかハンドラ書けばできるとかそんなのは当たり前の事だけど
そんな車輪の再発明に工数が出るわけがないし

880 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 23:47:26.31 ID:QC64Azkrd.net]
無料ライブラリなんかnugetでなんぼでもインストールできるだろ

881 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 00:19:33.20 ID:aLLF0qhM0.net]
>>840
具体的にはどのパッケージですか?

882 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 07:51:00.77 ID:qCaaK3zMa.net]
>>839
ASP.NET CoreはMVCだからGUIは単なるHTML
ASP.NET Core関係なく普通にHTML/JS/CSSのライブラリを拾ってきて使えばよい

883 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 14:29:55.52 ID:ujIuVWNLr.net]
ライブラリ不要レベルやん
マウス位置とライン引くだけだし

884 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 14:36:43.63 ID:rEhHpU7y0.net]
PictureBoxがあればなんだってできるみたいな

885 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 16:41:36.62 ID:EX1pNRMXM.net]
文字の折返しさえできたら実はなんでもいい

886 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 16:48:08.19 ID:lkW5ctngd.net]
>>843
誰もライブラリ使えなんて言ってないだろ

887 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 19:08:23.29 ID:BBodZQOSM.net]
>>842
そういう使い方はNGですね
サーバーサイドレンダリングが基本のフレームワークとクライアントサイドのフレームワークは常識的に考えてインピーダンスミスマッチでしょう
(primefacesのように最初からセットで設計されてるならともかく)
それならまだaspnet coreはapiに徹してang



888 名前:ularやreact使ったほうがマシです []
[ここ壊れてます]

889 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 19:18:37.89 ID:IphAgnBQM.net]
>>847
なんでクライアントフレームワークの話になるんだ?
AngularやReactのようなものに依存せず単独でページに組み込めるHTML/JS/CSSのコンポーネントなんか腐るほどあるだろ

890 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 19:30:12.58 ID:36qwSZL10.net]
C#で、VPN経由でCiscoのL2スイッチにログインしてフォワーディングデータベースと各ポートのステータスを取得したいんですが、
簡単に解説しているサイトはないでしょうか?

クライアントを動かすPC - HUB - NATルーター - VPNルーター - ネット - VPNルーター - HUB - Ciscoルーター - 目当てのCisco L2スイッチ
ていう状態です。

891 名前:デフォルトの名無しさん [2018/07/26(木) 19:41:22.79 ID:jgVPt9Lg0.net]
LinQの中身ってfor文ってホント?

892 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 19:42:46.48 ID:CSIl69XB0.net]
アイドルグループの中身は知りません

893 名前:デフォルトの名無しさん [2018/07/26(木) 19:49:11.86 ID:jgVPt9Lg0.net]
LinQクラスの各メソッドの中身の味方教えてください

894 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 19:51:33.98 ID:XPlHGtVDd.net]
>>852
github

895 名前:デフォルトの名無しさん [2018/07/26(木) 19:55:09.78 ID:gWAgddOO0.net]
>>852
https://referencesource.microsoft.com/#System.Core/System/Linq/Enumerable.cs

896 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 20:49:53.68 ID:X2GH2dHI0.net]
>>847
NGかどうかはお前の都合だがな
ASP.NETでもWebFormあたりは、サーバ側とクライアント側の統合を目指してたんだよ
クライアントスクリプト一切書かなくてもAJAXできるコントロールとかまであった

だが今の流れはサーバサイドはサーバサイド、クライアントはクライアントな流れ
クライアントはすきなライブラリ使え
>それならまだaspnet coreはapiに徹して
apiに徹するのと、html出力に徹するのとどれほどの違いがあると?

897 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 20:51:44.84 ID:aLLF0qhM0.net]
>>848
ASP.NET Coreと相性いいのは無いね



898 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 20:59:07.08 ID:0BZQ2aB/M.net]
ASP.NETの問題というよりC#自体がwebのフレームワークと相性が悪いような…
おとなしくtypescript使ったほうが楽かなとは思う

899 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 21:10:20.45 ID:aLLF0qhM0.net]
>>855
WebFormsの時からずっとだけど鯖で出力したhtmlやバックエンドの挙動を把握してJS書かないといけないからめんどくせえじゃん
なんのためにナマのhtmlを隠蔽したのかって話になる
htmlを隠蔽すると決めたなら徹底しなきゃならん
apiに徹すればクライアントはクライアントで綺麗に切れるからそんな煩わしさから開放される

900 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 21:25:20.81 ID:+zykdZnW0.net]
LinQ は、Rails のQuery object と同じだろ

where 何々
order by 何々

別々に書いた文字列を、1つのSQL 文にまとめて、DB に問い合わせする

901 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 21:32:16.74 ID:Q5F+5vhQ0.net]
>>857
ちょっと何言ってるかわからない

902 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 21:43:03.68 ID:wePnpHti0.net]
>>849
C#が扱うのはTCPあたりだけじゃないのか
そっから下はOSやら何やらの仕事だし上はCISCOのマニュアルなり読めとしか言えそうにない

903 名前:デフォルトの名無しさん [2018/07/26(木) 21:45:25.99 ID:F57VHmfS0.net]
ソリューションエクスプローラーで.csファイルのなめえ変えてもデバッグできる?データ壊れない?

904 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 21:47:47.65 ID:0BZQ2aB/M.net]
>>862
gitというものがある
そいつを使えば自由自在に試し放題だ

905 名前:デフォルトの名無しさん [2018/07/26(木) 21:50:46.39 ID:F57VHmfS0.net]
いやあああああああ
これ理解してないと動かなくなるやつうううう
https://i.imgur.com/3Mz1OsU.png

906 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 21:51:53.07 ID:rEhHpU7y0.net]
こういうハッキングの匂いがするやつは回答しないほうがいい

907 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 21:51:55.20 ID:gWAgddOO0.net]
>>862
ソリューションエクスプローラー上での名前の変更は問題なく出来る



908 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 21:53:30.55 ID:0BZQ2aB/M.net]
git使わなくてもソリューションのフォルダごとコピーかzip圧縮でも十分だけど

909 名前:デフォルトの名無しさん [2018/07/26(木) 21:55:22.46 ID:F57VHmfS0.net]
>>866
>>867
ごめん無事でした
なんかVSがクラス名と一致させようとするからダメかと思いました
ありがとうございます

910 名前:デフォルトの名無しさん [2018/07/26(木) 21:59:28.86 ID:F57VHmfS0.net]
>>854
これ見てみます
ありがとうございます

911 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 22:20:23.27 ID:uwMXaYNj0.net]
>>868
javaとは違うんだよ

912 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 22:27:27.51 ID:ySl3KkZ10.net]
>>867
gitでもフォルダコピーでも、自由に試し放題なのは同じだが
gitだとフォルダコピーに該当する操作が一瞬なんだよね
フォルダコピーだとある程度大きいプロジェクトになるとプログレスバーを待たなきゃならん

913 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 08:21:01.22 ID:IX5bbTr/0.net]
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違反には目をつぶるしかないのでしょうか

914 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 09:32:16.19 ID:rUA3L/4NM.net]
バリデーションに限った話ではなく属性のMixinができないのは言語仕様の欠陥
多重継承が可能なら悩むことなかったんだけど...
まあC# 9ではMixinがサポートされるらしいのでそれ以後は簡単になるだろう
それまでは諦めてコピペする以外ない

915 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 09:50:11.05 ID:Z2VlFyTVa.net]
パラメータだけconst stringにしとけ

916 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 16:04:28.18 ID:xL2l+Gb50.net]
>>872
CustomValidationでいけそうな要件にみえるんだけど?
質問内容の理解が間違ってたらごめん

917 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 16:54:36.21 ID:Ls9tzaL9M.net]
>>875
ValidationAttributeはサーバーサイド検証はできるけどクライアントサイド検証やEFには効果がない(追加コードを書かなければ)
属性Mixin的なことができれば追加コードを何も書かずにそれらの収穫を得ることができたはずなんだ



918 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 17:41:04.66 ID:PBzjh5L/d.net]
>>872
\d+にするからなんじゃないの?
\d{14}か、{,14}で解決するのでは?

919 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 19:08:15.95 ID:Ls9tzaL9M.net]
>>877
正規表現を変えても同じ
サーバーサイド検証だけが検証属性の役割じゃない

920 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 21:33:59.64 ID:ooB9UphUa.net]
例がおかしいせいか正規表現で何とかしろって最初に見たとき思った

921 名前:デフォルトの名無しさん mailto:sage [2018/07/28(土) 21:46:45.51 ID:IX5bbTr/0.net]
TypeDescriptorで動的属性にしたけどダメだった
このFWカスタムしにくい

922 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 17:20:08.97 ID:1IN8lfJM0.net]
VB6のプログラムをC♯で書き直しをやってるんですが、複数あるフォームで毎度使うグローバル変数や定数ってどうしたら良いですか?

923 名前:デフォルトの名無しさん [2018/07/29(日) 17:39:04.96 ID:jELBj7vj0.net]
それらを管理する構造体かクラスを作るのが良い

924 名前:ナしょう
ただ、作り始める前に現代風のプログラミングの仕組みを勉強したほうが良いんじゃないかな
変数のスコープの問題として解決しようとする時点で基礎が出来ていない気がしてしまう
[]
[ここ壊れてます]

925 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 17:48:24.83 ID:OsBw9Csr0.net]
>>872
属性二つ付けとくのでダメなのか?

>>881.882
ベタに移植するならなるべく同じようにしとくってのも手だぞ
まあベタ移植ならVB.NETでもいいわけだが

926 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 18:02:58.75 ID:qyyXPeAu0.net]
>>881
もう親フォームのpublicに置いちゃえば?

927 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 19:28:22.30 ID:w8CG8UOca.net]
Appに持たせる



928 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 19:28:43.90 ID:1IN8lfJM0.net]
親フォームにpublicに置くのがベターなのかね?楽でいいし。

929 名前:デフォルトの名無しさん [2018/07/29(日) 19:32:07.48 ID:0glkw7L10.net]
普通は目的や用途に分けてベースクラスと機能クラスに分けて配置するだろ。

930 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 19:32:52.42 ID:w8CG8UOca.net]
定数はクラスに持たせるべき
グローバル変数というものは存在しない

931 名前:デフォルトの名無しさん [2018/07/29(日) 19:36:39.97 ID:LP0lwlvd0.net]
public static read onlyをまとめたクラス1個作ればよくね?

932 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 19:42:49.43 ID:1IN8lfJM0.net]
やっぱクラスか。

933 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 22:10:08.10 ID:UEZe9Eeh0.net]
別に構造体でも良いのよ

934 名前:デフォルトの名無しさん [2018/07/29(日) 22:38:15.47 ID:F0wMdqEY0.net]
標準モジュール→Public Shared Class

935 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 22:43:45.68 ID:ELcoO8zwa.net]
>>881
そんなものは無くすように書き直すのがベストでしょう

どうしてもというのならProgramにでも置く。
お勧めはしないけど、using static使えばVB6っぽく書けると思うw
https://ufcpp.net/study/csharp/ap_ver6.html#using-static

936 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 23:31:49.93 ID:1IN8lfJM0.net]
例えば何度も登場するファイル名とかパス名とかって使う時はどのようにします?

937 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 23:33:57.49 ID:caIFgm3n0.net]
>>894
決まった値ならconst stringにしておけば間違う心配がない



938 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 00:08:07.54 ID:VxehPTRB0.net]
>>894
staticのメンバ変数

939 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 00:08:34.88 ID:rsToVW4ga.net]
>>894
そもそも何度も登場させない
クラスに集約する

940 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 07:19:52.76 ID:+iDwScmiM.net]
>>897
俺は何度も登場させた方がいい派
登場させないってことは定数であるにも関わらず変数に突っ込んで色んなとこ回して最後にそこに行き着く的なソースになんだろ?
定数なら検索したときに使用箇所がひと目でわかったほうがいいよ

941 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 07:36:32.18 ID:rsToVW4ga.net]
>>898
そうじゃない
同じファイルをあちこちで突っつき回す設計そのものに再考の余地があるということ

942 名前:デフォルトの名無しさん [2018/07/30(月) 09:05:26.71 ID:Jg26N5KJ0.net]
クラス内で何度も参照する事はあるだろうが、複数のクラスに跨って同じ定数を参照するってのは、
それ、たまたま同じなだけだから、まとめるのは誤りだろ?

943 名前:デフォルトの名無しさん [2018/07/30(月) 09:07:31.01 ID:MG3uyJqBM.net]
899に同意だな。おれがレビューしたら書き直させるわ。

944 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 12:08:02.74 ID:7haz7YgPd.net]
エクセルをデータベース接続して開いて閉じる。までは出来たのですがそこからシート2を選択して最終行まで読み込むにはどうしたら良いですか?

945 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 12:10:36.96 ID:5omRjmvzM.net]
まずVBAで書いて、意図どおりに動いたらそれを同じようにC#で書くだけ
VBAで動かないならスレ違い

946 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 12:14:41.69 ID:KgGKmVLt0.net]
>>902
接続したならシート名をテーブル名としてSELECT使えば最終行まで

947 名前:謔黷驍ヘず []
[ここ壊れてます]



948 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 12:20:48.13 ID:7haz7YgPd.net]
セレクトでググってみます!

949 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 14:16:52.66 ID:7haz7YgPd.net]
さっぱりわかりません。これをC♯でどうすればいいですか?
https://i.imgur.com/XlcEsOK.jpg

950 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 14:49:47.75 ID:yNVCdeG40.net]
窓から投げ捨てろ

951 名前:デフォルトの名無しさん [2018/07/30(月) 15:35:38.43 ID:5x/p7Cmg0.net]
コンボボックスのitem追加してるだけやん

952 名前:デフォルトの名無しさん [2018/07/30(月) 17:13:19.68 ID:fEGsPpBX0.net]
これ、出来上がるまでずっと聞きまくるわけかい?

953 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 17:49:14.69 ID:7NTlHlZ80.net]
とりあえずガチでまったくわからないなら、Do Until とかIf Thenみたいな処理の流れに関するとこから、C#に翻訳してみれ。

954 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 20:38:04.00 ID:jheKbzlL0.net]
>>906
SharpDevelopで変換できたりせんか?

955 名前:デフォルトの名無しさん mailto:sage [2018/07/30(月) 20:56:43.06 ID:VxehPTRB0.net]
>>911
VB.netならやったことある
VB6はできるんかな?

956 名前:デフォルトの名無しさん [2018/07/30(月) 21:47:46.48 ID:wGxxsVxc0.net]
>>908
コメントにも書いてあるなw

957 名前:デフォルトの名無しさん mailto:sage [2018/07/31(火) 10:42:36.92 ID:2Ex+HyWw0.net]
>>912
VB6から直接はだめだろうな。VB.netを経由させて。



958 名前:デフォルトの名無しさん mailto:sage [2018/07/31(火) 12:16:51.56 ID:U+0KE03Yd.net]
無事なんとか出来ました。
お騒がせしてすみません。

959 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 02:45:49.37 ID:FqdJoFN10.net]
VBを勉強しようかC#を勉強しようか迷ってるんですがVB(およびVBA)でできることはC#でもできると考えていいのでしょうか?

960 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 06:48:32.72 ID:l9oYGZY20.net]
>>916
そんなのお前が出来るか、出来ないかによる

961 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 07:02:36.02 ID:rdkY69Yn0.net]
>>916
いやc#やればいいよ

962 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 07:13:07.63 ID:qsg6KMIX0.net]
VBAで出来てC#で出来ないことはある

963 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 07:19:08.47 ID:rdkY69Yn0.net]
unityでサポートされてるのがc#だった気がする

964 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 07:29:28.41 ID:Y/cQkN27M.net]
>>916
VBextensionを取り込む事が出来る
コーディング量が少ない
単価が高い

VBを選ぶ理由はほぼ無しかと

965 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 07:53:12.90 ID:FqdJoFN10.net]
ありがとうございます
迷わずC#を勉強しようと思います

966 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 07:58:50.19 ID:+mBt06Dyd.net]
RazorもC#

967 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 08:27:33.28 ID:jJEMbL0b0.net]
迷わず逝けよ逝けば分かるさ



968 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 10:13:49.72 ID:xEVWsek0M.net]
VS2013 で Process で別コンソールアプリを実行するプログラムを作っています。
OutputDataReceivedイベントで随時標準出力を取得したいのですがうまくいきません。
同じくVS2013C#で作ったコンソールアプリでのConsole.WriteLineならうまくいくのですが
VC++6.0 で printf 出力だと、ある程度溜まったタイミングでそれまでの出力が一気に来ます。

printfでもリアルタイムで取得できるようにできないでしょうか。

969 名前:デフォルトの名無しさん [2018/08/01(水) 10:16:00.84 ID:bFUL3z7Ep.net]
そりゃあ、ある程度溜まってから表示されるからじゃね?

970 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 10:17:43.78 ID:7O+dWvwKM.net]
flushしろ
対象に手を入れられないなら無理

971 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 10:41:41.93 ID:WxaG7LihM.net]
つ setvbuf

972 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 13:34:26.08 ID:xEVWsek0M.net]
>>928
setvbuf でうまくできました!
ありがとうございました。

973 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 21:13:58.64 ID:htMziwx30.net]
resharper使ってる人感想教えて
勉強になるって書いてるブログもあったから
半額セール中に試してみようかなと

974 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 21:15:10.33 ID:soAz8ZFH0.net]
ブログに書いてるんならそれを参考にすればいいじゃん

975 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 22:14:32.39 ID:+VbRL20ga.net]
resharper重いから嫌い
よく他の拡張と干渉して不具合起こすし、機能の頭数だけ多くて結局vsにデフォルトで搭載されてる機能と似たようなもの以外は滅多に使わなかった
vscodeが快適すぎて最近はC#もほとんどvscodeで書いてるわ

976 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 22:38:33.79 ID:htMziwx30.net]
使用感産休ー
結局使わなくなっちゃうくらいもっさりは躊躇するな
俺のマシンそんな高性能じゃないし

977 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 12:35:14.33 ID:atWDWRRZd.net]
先日のお騒がせものですが、シートの中身入れることはできたんですが、今度はシート名をコンボボックスに入れるのにこれだとシート名が名前順に入るんですがシート順に入れるにはどうしたらできますか?

https://i.imgur.com/LxYIiyg.jpg



978 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 13:28:17.69 ID:CFW8XzdE0.net]
>>932
具体的にどこがcodeの方が良いんだ?
軽さ以外にある?

979 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 14:17:24.55 ID:B5uzr2w20.net]
>>934
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.combobox.sorted(v=vs.110).aspx

980 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 14:19:27.48 ID:5ti5JZJPM.net]
>>935
フォントのレンダリングが美しくて見やすい
プラグインが豊富
一緒に他の言語のソースを編集する必要がある場合に完全にシームレスに行き来できる
プロジェクトファイルを直接テキストとして開ける(.NET Coreなら必須)

981 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 18:24:36.08 ID:IKbU8cfg0.net]
細かい話だけど.csprojのテキスト編集は.NET Coreプロジェクトだと
VSでもコンテキストメニューにあるのよね
まあIDEの立場としてはGUIが未実装故の手抜きと見做すべきだろうけどw

982 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 18:59:54.66 ID:R3xyuwRy0.net]
30年前のプログラミング環境に逆戻りですなw

983 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:09:52.83 ID:5ti5JZJPM.net]
>>939
設定を必要最小限にして極力テキストベースで完結させるのが今時の流行り
新形式のプロジェクトファイルは直接手で編集しやすいように構造が全面的に見直されてるんだよ
gitにコミットするときとかgithub上でレビューしたりするときにどうせ中身を一行一行意識しなきゃいけないんだから、
GUIの設定画面なんかはっきり言って邪魔なだけ

984 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:27:12.70 ID:R3xyuwRy0.net]
30年前と言ってることが同じですな。

985 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:28:34.12 ID:R3xyuwRy0.net]
一度滅んだOSSの糞文化を取り込んだせいでどんどんMSの品質が腐っていく。

986 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:31:53.19 ID:vZ9OA8Bgd.net]
おじいちゃんかわいそうに

987 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:33:26.86 ID:5ti5JZJPM.net]
まあ騙されたと思って新しい形式のプロジェクトファイル使ってみたら?
Coreじゃなくても使えるよ
GUIによる設定は今まで通りにできるし、バージョン管理が楽になって普通に便利



988 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:44:44.63 ID:R3xyuwRy0.net]
>>943
無職乙。C#の案件は見つかりましたか?

989 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:47:31.22 ID:R3xyuwRy0.net]
>>944
結局ゲイツとカトラーがこんなもの使いものになるかとブチ切れしたのが最後、MSの凋落が止まりませんな。
マイナー街道まっしぐらだったヘジをスカウトしたのが失敗の始まりだったな。

990 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:50:04.61 ID:R3xyuwRy0.net]
C#はほぼ壊滅しただがまだVB.netの案件は数多く残っている。

VB >>>> C# これが現実。初心者はVBにしたほうがいい。

991 名前:デフォルトの名無しさん [2018/08/02(木) 19:50:50.20 ID:3eKb6bola.net]
>>947
いいから早く就職しろ

992 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:52:31.24 ID:vZ9OA8Bgd.net]
>>945


993 名前:己紹介かよw []
[ここ壊れてます]

994 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:56:33.48 ID:R3xyuwRy0.net]
ID:vZ9OA8Bgd ←こいつC#しかできないみたいw

何を勘違いしてC#を勉強した知らんが10年前から既にC#はオワコンだから諦めろ。今は採用案件は皆無。

馬鹿なおまえになぜか教えてやろう。C#は糞だから。これが世界中のIT業界の総意。ゲイツやカトラーも含めてな。

995 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:59:03.89 ID:QFtuhP10p.net]
いつものヘジたんラヴおじさんか
ボーランド時代に逆恨みしてメンヘラ化してるというw

996 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:59:47.82 ID:R3xyuwRy0.net]
しかし、今時、30年前の手法でやりましょうって笑えるよな。開発の歴史を全く知らないのだろうか。
それが今の流行ならWindows10やC#も流行ってるはず。だが見向きもされない。むしろ敬遠されてる。

997 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:02:53.83 ID:vZ9OA8Bgd.net]
>>950
なるほどだからあなたは採用されないのですね



998 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:03:34.69 ID:R3xyuwRy0.net]
>>951
はぁ? むしろボーランドこそ革新的なIDEを普及させたんじゃねーか。そんなことも知らないとか無知すぎる。
それがなんでまたGUIは邪魔なんでテキストでやりましょうってw アホですか。どうせエディタもvim設定なんだろ。

時代遅れの骨董品どもが。

999 名前:デフォルトの名無しさん [2018/08/02(木) 20:03:36.14 ID:L2LG0yaW0.net]
え、わからない
VBとC#どっちがいいの?

1000 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:04:45.73 ID:R3xyuwRy0.net]
>>953
キミは煽りばかり全くC#やVSの話はしないのですね。馬鹿がバレるのが怖いんですか?

1001 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:04:48.57 ID:uMr/Fq0h0.net]
ゴミをつついて遊ぶの止めてくれるかなサル君

1002 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:07:45.63 ID:R3xyuwRy0.net]
ワッチョイスレって単発煽り多すぎて議論にならんな。

必死にでネット繋ぎなおしてると思うと笑えるw >> ワッチョイ cf81

1003 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:09:28.08 ID:R3xyuwRy0.net]
ワッチョイって意味ないな。

低脳馬鹿のコード書けない煽り屋とマイナーOSS陣営から流れてきたvi使いの骨董品以外いない。

1004 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:11:37.17 ID:R3xyuwRy0.net]
煽りしかしない奴ってなんで内容ないレスばかりするんだろうと思ったんだけど、
キーボードアレルギーか何かで入力がめっちゃ遅いんだと思うわ。
おれが5レスする間に一行しか打てないトロ臭さ。

リアル低スキルじゃん。今まで碌にコード書いてないのがバレバレだな。

1005 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:15:41.97 ID:R3xyuwRy0.net]
結局、技術的反論は皆無。これが現実。

今のC#信者は低スキル。今時、テキスト最高ってw COM、.net全否定かよwww

1006 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:25:19.02 ID:R3xyuwRy0.net]
単発煽りって急に大量に現れて急にみんな消えるよな。

可能性として考えられるのは、ゆとりで低スキルで無職で同一人物。

1007 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 21:55:18.44 ID:6w1GWseD0.net]
>>934
OleDbじゃシート順は無視されるから他の手立てを考える必要がある
https://stackoverflow.com/questions/1164698/using-excel-oledb-to-get-sheet-names-in-sheet-order
xlsxならここのZipArchive使うのとか(他に色々書かれてるコードは意味ないから無視して良い)
System.IO.Compress.PackagingとかOpen Xml SDKとかClosedXMLとか
xlsならNPOIぐらいなんかね あ、上のページにNPOIのサンプルもある



1008 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 08:51:02.00 ID:tLm3HHgqd.net]
まあVSつかいたい奴は明らかにVSが向いてないシーンでも

1009 名前:使いたがるからな。
俺も使い分けてるが、netcoreでも案外VS起動する事の方が多い。nuget探しやすいとかそんなレベルだけど。
どっちでも良いものは割とVS Codeで開くな。
とはいえ、mdのライブプレビューとかVSで出来んのかな?
[]
[ここ壊れてます]

1010 名前:デフォルトの名無しさん [2018/08/03(金) 11:29:34.10 ID:am/wpoGlp.net]
VSはIDEの機能を利用したいが為だけに使うことがある。

1011 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 11:34:31.88 ID:U4A077LcM.net]
MDプレビュー&編集はメジャーなVS拡張がある

1012 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 13:57:43.04 ID:tLm3HHgqd.net]
あるんだ。
何が何でもVSの中で過ごせるように出来てんだなぁ、やっぱ。

1013 名前:デフォルトの名無しさん [2018/08/03(金) 19:55:03.42 ID:nRWExeYy0.net]
C#よりVBのが人気って本当ですか?

1014 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 21:05:33.17 ID:C7OuABnlM.net]


1015 名前:デフォルトの名無しさん [2018/08/03(金) 22:34:44.79 ID:pBzQtwq10.net]
if(aaa.bbb.ccc ==null){
 ・・・
}
だと、aaaかaaa.bbbがnullの時にNUll参照エラー出ますよね。
じゃあ、
if(aaa!=null && aaa.bbb!=null && aaa.bbb.ccc ==null){
こう書くしかないですか?
もっとスッキリ書けませんか?

1016 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 22:36:26.80 ID:KKU0/EVq0.net]
null条件演算子が使えるなら使え
どのバージョンで入ったかは忘れた(役立たず)

1017 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 22:43:12.49 ID:ls6gmcCr0.net]
>>970
なんか下のコードって
動いたら不具合臭くない?

if(コードA && コードB && コードC)

ってあったときにコードAがfalseだからってコードCが実行されないとおかしくなる処理もあるんじゃね?
コードABCがそれぞれ結果を保持するような動作をするときもにょる

言語仕様がどうなってようと書いたやつは死刑



1018 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 22:57:30.21 ID:5FtEqA870.net]
>>972
横からですが
> ってあったときにコードAがfalseだからってコードCが実行されないとおかしくなる処理もあるんじゃね?
そういう場合は && ではなく & を使うと良いようです。
よかったら「短絡評価」で検索してみてください。

1019 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 23:23:18.87 ID:zsmRuSg9d.net]
aaa?.bbb?. ccc == null

1020 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 23:36:42.74 ID:ls6gmcCr0.net]
>>973
コードABCがそれぞれ判定結果を保持する処理をしてたら余計なお世話じゃねーか?

1021 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 23:59:44.06 ID:5FtEqA870.net]
>>975
>>973
確かにその場合は短絡評価は余計なお世話と言うか、短絡評価を使うことは間違ってますね。
ただ、>>970 の例では副作用がないのは明らかですし、
C# で短絡評価が用意されている以上、それを使うなというのは酷な話のようにも思います。

今回の問題に関しては >>974 のような & も && も使わない解決策もありますが、
Microsoft の Reference Source でも obj != null && ((int)obj) != 0 のように
短絡評価が積極的に使われてますので、そのようなコードは認められるべきではないでしょうか。

1022 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 00:26:40.78 ID:aY8Umh7+0.net]
>>976
人に優しいコードじゃない
見たらちょっと考えちゃうだろ
俺はそれだけで避ける

1023 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 00:53:29.00 ID:b3FMlOEa0.net]
なんかnull条件演算子が短絡じゃないような言い方をしている人がいますが
null条件演算子は短絡評価なので念のため

仕様の是非については関知しません
勝手にすればよろしい

1024 名前:デフォルトの名無しさん [2018/08/04(土) 09:01:55.83 ID:n5GHf3Ra0.net]
>>974
もし
aaa.bbb= null
だった場合に、
if(aaa?.bbb?. ccc == null)
がtrueになることは無いですか?

1025 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 09:42:38.97 ID:wpkf7FcP0.net]
ならない
もしtrueにしたいのなら if(aaa?.bbb == null || aaa?.bbb?.ccc == null) にする

1026 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 09:49:39.47 ID:L3XBWYHn0.net]
>>979
なるん

1027 名前:じゃね? []
[ここ壊れてます]



1028 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 10:12:57.05 ID:aY8Umh7+0.net]
>>980
ならないんだ?
なんかあんま使わんほうがいいな
この辺の仕様決めた奴って滅茶苦茶だな

1029 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 10:16:40.19 ID:wpkf7FcP0.net]
ごめん確認したらtrueになったわ

1030 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 10:18:40.31 ID:c4yFtWHQ0.net]
Null 条件演算子の結果でnull判定ってなんか使い方おかしくね?
null判定の記述省略が目的だと思ってたわ

1031 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 10:18:47.38 ID:aY8Umh7+0.net]
>>983
なるのかよ

1032 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 10:46:26.16 ID:Q3NLupVYM.net]
?.は使える場面が限られすぎてるんだよな
主語が違っても使えるようにしてほしい
employee ?& company.Fire(employee)
// employee != null ? company.Fire(employee) : null と等価
みたいな

1033 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 12:29:39.69 ID:AH7fLvgn0.net]
>>984
> Null 条件演算子の結果でnull判定ってなんか使い方おかしくね?
そんなもん何をやりたいかによるだろ

> null判定の記述省略が目的だと思ってたわ
Null条件演算子自体の目的はそれでいいと思うが

1034 名前:デフォルトの名無しさん [2018/08/04(土) 12:36:27.73 ID:n5GHf3Ra0.net]
>>986
>employee ?& company.Fire(employee)

?& とは何ですか?
ググルキーワード教えて下さい。

1035 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 21:50:20.61 ID:sXotmGKy0.net]
>>979
trueになるけどそれでだめなのかよ
だったら
aaa?.bbb != null && aaa.bbb.ccc == null

1036 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 15:20:33.53 ID:wZ9wDNsY0.net]
俺なら分けてコメントでも書いておくかな
if(aaa == null || aaa.bbb= null){
// Hack aaaとbbbがnullでもOKで、その時は何もしない。設計がゴミ
}
else if(aaa.bbb.ccc == null){
}

1037 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 16:43:04.45 ID:RYmTh0/wr.net]
再帰してNullチェックする関数一つ書けばいいのでは?



1038 名前:デフォルトの名無しさん [2018/08/05(日) 17:47:48.87 ID:76QdhMr90.net]
どうでもいいことになるとレスが増えるな
>>980
テンプレ読んでいるだろ。スレたて

1039 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 18:17:15.11 ID:DE014Z3K0.net]
建てられなかったので別の方お願い

1040 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 18:21:48.75 ID:C8NdcnMU0.net]
>>991
再帰?
何言ってるんだ?

1041 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 18:38:49.57 ID:hZh56vqa0.net]
再帰でnullチェックする関数気になるな

1042 名前:デフォルトの名無しさん [2018/08/05(日) 19:30:23.50 ID:yb/HDiEo0.net]
コンソールプログラミングでは
Application.DoEventsが使えませんが
代わりに処理中の入力を受け付けるようなメソッドはないでしょうか?

時間がかかる処理をESCキーでキャンセルするような処理を
コンソールプログラムで書きたいと思っています

1043 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 19:30:55.99 ID:uVIrroLRM.net]
こうかな
// nullが見つかった深さを返す
static int? AmazingNullCheck(int level, dynamic obj, params Func<dynamic, dynamic>[] next) =>
 obj == null ? level : next.FirstOrDefault()?.Invoke(level + 1, obj, next.Skip(1).ToArray());

if (AmazingNullCheck(0, a, a=>a.b, b=>b.c) == 2)
 // a.b.c == null

1044 名前:997 mailto:sage [2018/08/05(日) 19:37:00.55 ID:uVIrroLRM.net]
訂正
obj == null ? level : !next.Any() ? null : AmazingNullCheck(level + 1, next.First().Invoke(obj), next.Skip(1).ToArray());
かな

1045 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 19:43:31.17 ID:uVIrroLRM.net]
>>996
特に何もしなくてもCtrl + Cで止まるだろ?
そのときに独自の処理を挟みたいなら Console.CancelKeyPress イベントを使う

1046 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 19:45:50.96 ID:3KDX12Zf0.net]
1000ならjava民絶滅

1047 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 61日 0時間 13分 9秒



1048 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されてい

1049 名前:ワす []
[ここ壊れてます]






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<289KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef