X



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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 2317-qMUn)
垢版 |
2018/12/15(土) 11:07:07.89ID:0aSEF/I+0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

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

■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part139
https://mevius.5ch.net/test/read.cgi/tech/1538646998/
■コードを貼る場合は↓を使いましょう。
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
0583デフォルトの名無しさん (ドコグロ MMd5-/S9r)
垢版 |
2019/02/08(金) 18:56:00.90ID:wLzz2paeM
JavaScriptそっくりもクソも、JavaScriptのasync/awaitはC#が発祥だぞ
それをJavaScriptもPythonもKotlinもそっくりそのまま真似した
汚い機能だと感じる君の感覚は否定しないが、好みは別にして非同期プログラミングのデファクトスタンダードであるのは事実だ
0584デフォルトの名無しさん (ワッチョイ a1d2-hHwN)
垢版 |
2019/02/08(金) 19:49:11.94ID:lL88DpXz0
割り込んですまない。
SolrNet を使ったことあるヤツがいたら知恵を貸して欲しい。

SolrNet を使ってこんなことをやってみた。

Startup.Init<[適当なモデルクラス]>( [SolrのサーバーURL] );
var solr = ServiceLocator.Current.GetInstance<ISolrOperations< [適当なモデルクラス] >>();

まあごく当たり前の初期処理なのだが、実行すると2行目の Current の中身が null でヌルポエラーになる。

原因がわからなくてしばらく悩んで、GitHub にあるサンプルコードをダウンロードしてきてコピペしても同じだったのだが、
ダウンロードしたソリューションをビルドして実行するとこの部分を問題なく通過する。
またしばらく悩んで、nuget でダウンロードしてくる SolrNet のバージョンに違いがあることに気がついた。
どうやらバージョンが 0.5 以下だと通過し、それ以降のバージョンだとヌルポエラーになるようだ。

最新のは 1.0.1 だったか、このバージョンで上の部分を通過させるに必要な事はなんだろう。心当たりがあったら教えて欲しい。
0.5 の辺りって、その辺りを境に他のパッケージを参照するようになってるぽいのだけど関係があるだろうか。
これを使えってご指定なんだよな。。
0585デフォルトの名無しさん (アウアウエー Sa0a-gVV1)
垢版 |
2019/02/08(金) 20:41:31.54ID:OM4aCJGta
>>568
一応これでできるけど、これがベストかどうかは知らん
private static async Task WaitTillAsync(DateTime dt)
{
  var now = DateTime.Now;
  var span = dt > now ? dt - now : TimeSpan.Zero;
  await Task.Delay(span);
}

private async void button1_Click(object sender, EventArgs e)
{
  await WaitTillAsync(DateTime.Now.AddSeconds(10));
  MessageBox.Show("10秒後にこんにちは");
}

>>566
マジですかw
0586デフォルトの名無しさん (ワッチョイ aeda-OF6d)
垢版 |
2019/02/08(金) 21:46:41.47ID:tTA+g4g80
>>585
それだとNTPで時計合わせが発生したらズレる
素直にSystem.Timers.Timerで500ms位ごとにElapsedさせて、
指定時刻を過ぎてないか見るのが簡単。

マイクロ秒まで精度出したいっていうのなら、そもそも使うOS間違ってる。
0588デフォルトの名無しさん (ワッチョイ a205-BpIe)
垢版 |
2019/02/08(金) 22:27:25.20ID:DCBa2RJt0
みなさんありがとうございます。
一応自分で書いていたのは>>585さんに近くて設定時刻前ならそのまま、設定時刻を過ぎてたら一日足して現在時刻との差をawait Task.Delayしました。
タイマーの精度はそんなに必要なく1分間隔で大丈夫で、24時間起動で毎日朝8時から夕方17時までプログラムを止めるみたいな感じです。
同じプログラムを大量に起動するので処理はなるべく軽いのが希望で
ループ処理で毎分チェックするようなのは重いイメージがあるのですが大丈夫でしょうか?
また、時計合わせが発生したらズレるというのはどういうことでしょう?
0592デフォルトの名無しさん (オッペケ Srd1-da9w)
垢版 |
2019/02/08(金) 23:32:28.45ID:Waqd0NNdr
どのへんでプロセス落ちるの?
0593デフォルトの名無しさん (ワッチョイ a205-BpIe)
垢版 |
2019/02/08(金) 23:33:09.16ID:DCBa2RJt0
>>590
Thread.Sleepの所Task.Delayにしても大丈夫でしょうか?
0595デフォルトの名無しさん (アウアウエー Sa0a-gVV1)
垢版 |
2019/02/09(土) 00:44:22.99ID:jhOjUKEBa
>>593
もちろんいいと思うけど、

() => { while (dt > DateTime.Now) Thread.Sleep(500); }

async () => { while (dt > DateTime.Now) await Task.Delay(500); }

に文字数が増えて、使うTaskも増えて、かといってメリット無いような気が
0599デフォルトの名無しさん (ワッチョイ 9140-/WZR)
垢版 |
2019/02/09(土) 01:13:05.43ID:dvMZ7Shb0
PDFファイルからテキストを抽出する方法でオススメはありますか?
調べたところiTextSharpとPDFBoxは見つかりましたが、たまに読めないPDFがあるのが残念です。
0603デフォルトの名無しさん (ワッチョイ 9140-/WZR)
垢版 |
2019/02/09(土) 01:55:33.22ID:dvMZ7Shb0
>>601
私の技術力が低いので初心者用スレで質問させていただいたのですが、それを購入したとして初心者でもネットで調べる程度で可能ですか?
上に書いたiTextSharpとPDFBoxは、ネットに転がってたソースを丸パクリでやりました。
0606デフォルトの名無しさん (ワッチョイ bd5f-FtKs)
垢版 |
2019/02/09(土) 02:40:17.09ID:UMSUoHVI0
後、細かいことを言うと、
Task.Run()でThread.Sleep()だとSleep()してる間もThreadPoolのThreadを1つ占有してしまうが、
Task.Delay()ならその間はThreadPoolのThreadが開放される。
0607デフォルトの名無しさん (アウアウエー Sa0a-gVV1)
垢版 |
2019/02/09(土) 02:47:07.48ID:jhOjUKEBa
>>602
スリープするのはUIスレッドじゃないのでそれはありませんよw

これ、ちょっと前にも書いたけど、Timerを使った方が可読的になる場合ももちろんあるし、
そうでない場合もある。

つまり、別に車輪を再発明してるんじゃありません。

質問者がどっちのケースかは分からない
0610デフォルトの名無しさん (ワッチョイ 412d-Ctdi)
垢版 |
2019/02/09(土) 07:11:19.34ID:Bzu1ndzH0
待つだけの処理で1スレッド消費しちゃうのは良くないな
かといって単純にAwaitを使っただけのコードだと、どこかでデッドロックが生まれる可能性が増えたり、待てずにメインスレッドが抜けてしまったりする危険が出てくる
ここはコルーチンしか無いでしょ!!コルーチン最高!!!!
0612デフォルトの名無しさん (ワッチョイ 412d-Ctdi)
垢版 |
2019/02/09(土) 07:35:28.00ID:Bzu1ndzH0
タスクスケジューラはC#自体の機能じゃないからな、漢は黙ってコルーチン!!!
0614デフォルトの名無しさん (オッペケ Srd1-da9w)
垢版 |
2019/02/09(土) 08:32:22.73ID:6iVlgEPUr
>>594
それ非同期関係なくない?
0624デフォルトの名無しさん (ワッチョイ cd0c-feI+)
垢版 |
2019/02/09(土) 11:39:46.24ID:U3ljW3xz0
>>621,623
> 個人で使うものではない感じですか?
個人で使うのになんら障害はない

> openglを扱うためには裂けては通れないようですが
OpenTKとかあるし別に必須じゃない

> ラッパーのほうが情報すくなくて難しそうなので
じゃあC++で学習すれば?
0629デフォルトの名無しさん (ワッチョイ 412d-Ctdi)
垢版 |
2019/02/09(土) 13:27:48.74ID:Bzu1ndzH0
やっぱコルーチンだわ
コルーチン質問がいくらあっても全くロックが起きとらん!スレッドを丸々潰してもいない!最強!!
0630デフォルトの名無しさん (ワッチョイ 2d61-VUEs)
垢版 |
2019/02/09(土) 14:30:31.24ID:8aikkfMy0
>>620
そんなかからん。せいぜい 2割り増し程度。
でも、ブラックボックスが少なくて何やってるのか分かりやすいので、
はまりにくいかも。

C#のasync, awaitなんて初心者が理解できるものではない。
0634デフォルトの名無しさん (ワッチョイ 8261-VUEs)
垢版 |
2019/02/09(土) 22:52:17.77ID:5t5ZiBxh0
WPF, Windows Form の二種類があったり、Xamarineを使うかどうかが
あったり、C#も複雑極まりないんだね。GDI がセンスがない関数群だったので
嫌われたこと、MFCが汚かったこと、Direct3Dが汚かったこと、COMが
汚かったこと、ActiveX がさらに訳分からなかったこと、の再来を感じる。
「非同期処理」もスレッドをいくつでも起こすタイプや、Poolみたいな
ことをやるタイプ、以外にいくつもあって、さらに最後に async, await
が Synax Suger になっているんだね。なんという複雑さ・・・。
また、スレッドを起こすのに 1MB もメモリが必要・・・・。
なんという無駄使い。
0635デフォルトの名無しさん (ワッチョイ 8261-VUEs)
垢版 |
2019/02/09(土) 22:54:12.95ID:5t5ZiBxh0
結局、.Net Standard が破棄されて、.Net Core だけが残るといううわさを聞いた
けど、やっぱり Xamarine が捨てられていくのかな。買収時点で最初から
予想されたことだけど。
0640デフォルトの名無しさん (ワッチョイ 9232-/WZR)
垢版 |
2019/02/10(日) 00:09:35.84ID:XpZrG1uz0
APM、EAP、TAPなんかを言ってるのかね? 単に時代の流れじゃないの
レガシーをタスクにする方法もあるし、.NETはネイティブスレッドではなかろう
開始元へ差し戻しが多いからawaitがあるだけで結局Task推奨になってると思うけど

議論が活発なのは結構だが、ぽこぽこ増えていく言語バージョンを見てると不安は抱く
0653デフォルトの名無しさん (オッペケ Srd1-da9w)
垢版 |
2019/02/10(日) 08:46:39.23ID:uz05qYWIr
c#にはあってVBにはないものってないんだよな
.net CoreでもVB採用されてるし
0655デフォルトの名無しさん (ワッチョイ 2d61-VUEs)
垢版 |
2019/02/10(日) 09:08:02.67ID:YTe/5aEc0
>>651
スパゲッティーなアルゴリズムを作ってしまっただけなのに気付いてない。
理解できないのではなく、馬鹿馬鹿しくて腹が立つだけ。
頭のいい人は、もっと良い方法がすぐにひらめくから。
0656デフォルトの名無しさん (ワッチョイ 822f-1zeQ)
垢版 |
2019/02/10(日) 09:09:03.29ID:o5rWkmWO0
>>653
unsafe
0657デフォルトの名無しさん (ワッチョイ 412d-Ctdi)
垢版 |
2019/02/10(日) 09:21:34.97ID:0K2cdDeF0
>>655
君は「高卒の天才」ってやつかい?
0658デフォルトの名無しさん (ワッチョイ 2d61-VUEs)
垢版 |
2019/02/10(日) 09:24:33.66ID:YTe/5aEc0
C# のこの書き方は、35年前の Microsofot の N88-BASIC の
def fn にそっくり

[C#]
int f(int n) => n >= 1 ? n * f(n - 1) : 1;

[N88-BASIC]
DEF FN名前 [ ( 引数名 { , 引数名 } ) ] =式

10 DEF FNZEIKOMI(P)=P*1.08
20 INPUT "zeinuki kakaku";KAKAKU
30 PRINT "zeikomi kakaku";FNZEIKOMI(KAKAKU)
0661デフォルトの名無しさん (ワッチョイ 2d61-VUEs)
垢版 |
2019/02/10(日) 13:18:41.19ID:YTe/5aEc0
アメリカって、バイナリだと信用されないんだろうか。
アメリカは悪い人だらけなので武器を持たなきゃならないのが、それが安全な日本にまで波及していて、
セキュリティーソフトのせいでPCの能力は結構落ちるし、自作プログラムが誤検出されて
風評被害は出るしでいやな時代になったな。
0662デフォルトの名無しさん (ワッチョイ 2d61-VUEs)
垢版 |
2019/02/10(日) 13:20:59.07ID:YTe/5aEc0
アメリカじゃ、大手企業から以外はバイナリが信用できないから、
無料ソフトのバイナリが入手できない。それで日本まで生産性が下がって来た。
いつのまにか、そんな必要のない日本まで巻き添えになってる。
それに日本人は気づいてない。
■ このスレッドは過去ログ倉庫に格納されています

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