ふらっと C#,C♯,C#(初心者用) Part129 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/06/09(金) 18:36:01.72ID:lNiKtgPwM

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part128
http://mevius.2ch.net/test/read.cgi/tech/1493730340/

■関連スレ
C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1492843013/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
---
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2017/06/27(火) 12:39:57.82ID:p7AYCZKIM
>>436
それはコストが高い
目的としては俺らと同じ世界に生きてたくないって認識であってるなら代替案は出せるよ
2017/06/27(火) 13:39:08.26ID:saHJxNU8M
webアプリを作る際に、ajax control toolkit って今でも使っていいもんなんでしょうか?
使えるんでしょうけど、一般的にメジャーな技術としてと意味です。
2017/06/27(火) 13:46:07.08ID:ntBitUxx0
NET3.5との組み合わせだったらサポート内かも知れんが
別段の理由がなきゃNET4.52以降で作ろうな。
それに相当する機能が最初から含まれてる
2017/06/27(火) 13:55:12.80ID:thSLzROjM
AJAX Control Toolkitがどうというより、今時のWebはビューにサーバーサイドのフレームワークに合わせた仕掛けを入れるということ自体を一切しないよ
基本的にPHP的なプリミティブな作りにして必要に応じてJSON Web API+JavaScriptってのが今風
2017/06/27(火) 14:12:22.32ID:saHJxNU8M
笑われるようですが、VS2008の既存のWebアプリをVS2013に移植する作業をしています。

>>439
CalendarExtenderがツールの中に見当たらないようなので。
チャートとかは標準で入ってるようですが。

>>440
やっぱり変わってるのですね。
JSON Web APIですか。調べています。
2017/06/27(火) 14:37:03.26ID:yJfi3v1W0
関数AでWebBrowser1にURL入れて
DocumentCompletedで要素を抜き出す、抜き出した結果を関数Aの返り値として使いたいのですが、
DocumentCompletedイベントが発生して要素を抜き出すあいだ、関数Aを止めとかないと戻り値として使えないですよ?
非同期処理とかスリープ試した見たんですが、うまくいかないんですが、いい方法無いでしょうか?
2017/06/27(火) 15:03:26.03ID:tqNYDV9DM
Selenium
はい次
2017/06/27(火) 15:23:16.19ID:CA8TfY9qa
あれ?
2017/06/27(火) 15:25:46.33ID:CA8TfY9qa
var ready = false;
WebBrowser1.DocumentComplated += (sender, e) =>
{
  ....
  ready = true;
};
2017/06/27(火) 15:26:21.09ID:CA8TfY9qa
while(!ready) Thread.Sleep(0);
2017/06/27(火) 15:27:12.95ID:CA8TfY9qa
半角の!使ってると投稿はじかれる?
ちなみに、これだとイベントハンドラーがお漏らしするw
2017/06/27(火) 15:34:36.80ID:tqNYDV9DM
2chで効果的に回答をもらう方法に乗せられたみたいで癪だが、
頼むからWaitHandleを使ってくれ
2017/06/27(火) 16:43:00.57ID:CA8TfY9qa
待機ハンドルってResetしたのと同一スレッドでも待機できたかな
それを言ったらSleep中のスレッドのイベントハンドラが呼び出されるかどうかも怪しいがw
2017/06/27(火) 17:31:59.60ID:J5+LfTIy0
>>436
お前が全部書き込んだんだろw
2017/06/27(火) 18:57:24.97ID:yJfi3v1W0
>>445
これスレッドをスリープしてるんでDocumentComplatedも止まってませんか?
デバッグかけてみたんですがsleep淡々と繰り返してるみたいなのですが
2017/06/27(火) 19:02:37.08ID:M2+zHx9kM
戻り値がjsonのAPIを叩いて値を得るには同じ型のクラスを作ってそのオブジェクトに格納する感じでしょうか?
2017/06/27(火) 20:06:49.81ID:yJfi3v1W0
ブラウザとDocumentComplatedを別スレッドとして処理し、
メインのスレッドをスリープで解決しました。
2017/06/27(火) 22:23:04.90ID:GqKcgcUi0
プログラマの言語障碍者の比率の高さは異常
2017/06/27(火) 22:31:20.30ID:Z6j0KWDP0
>>454
私は、hogeとhageの二人と酒を飲みました
私と、hogeとhageの三人で酒を飲みました

「は」の時は自分以外の人数となり、「と」の時は自分を含む人数となる
つまり間違っているのはアンタの方だなw
2017/06/27(火) 22:34:56.37ID:nTqHpHCr0
なんで幼稚園レベルの日本語勉強会になってんだ。
2017/06/27(火) 22:36:22.93ID:uJ1RODaw0
>398 :デフォルトの名無しさん (ワッチョイ 9f19-q+YL) [sage] :2017/06/25(日) 21:56:53.75 ID:yN128eA50 [3/3]   
>Windows APIを使えば実装できると思ってますが
>どうでしょう?

こんな発言してるお前にだけは言われたくないわw
2017/06/27(火) 22:44:41.75ID:9dRWF27nM
>>454
自覚してるなら何とかしろよwww
2017/06/27(火) 23:07:32.13ID:GqKcgcUi0
>>455
バカ

私と、hogeとhageの二人で酒を飲みました


でも意味は通じる。
2017/06/27(火) 23:14:39.29ID:9pQu4/DRM
レガシーASP.NETマイグレは難しいよなぁ
Viewを捨て去りたいけどViewに密結合して切り離せないロジックが多すぎる
2017/06/27(火) 23:47:38.24ID:9dRWF27nM
>>459
一考したら通じるけど曖昧で遠回りなんだよ
わざわざ考えなきゃならない言い回しをするのは文学だけで十分

複数人でプログラムを設計する時に大切な事は明確な意志疎通
誰もお前の思考は覗けない
2017/06/27(火) 23:54:14.76ID:ig32XTB80
アスペの思考なんかのぞかねーよカス
2017/06/28(水) 00:02:01.25ID:P09sdn8I0
>>459
「私とあなた」を一人という人は先ず居りませんわw
2017/06/28(水) 00:12:23.07ID:u05kxE4a0
私とあなた一人
2017/06/28(水) 00:25:39.15ID:0cSQcQDT0
you and i
2017/06/28(水) 02:31:10.76ID:/mvunVzXa
てすと
2017/06/28(水) 02:36:56.88ID:/mvunVzXa
なんか意味不明な規制やっと解除されたか

>>451
やっぱりイベント起らないよねw
たぶんApplication.DoEvents呼んでやれば起こると思うけど、なんか不格好だよね
2017/06/28(水) 08:00:03.46ID:5KCPdjT60
MVCじゃない方のレガシーASP.NETってなんで普及してしまったんだろう
普通にPHP的な作り方の方が遥かにわかりやすいと思うけどな
HTMLのフォームのPOSTとかはホスト系で緑色の文字のAAでGUI作ってた時代の考え方と基本的に同じようなもんだから、
決してドカタ開発に馴染みのないスタイルってわけじゃないのに
2017/06/28(水) 08:04:00.96ID:+bF+mAil0
>>460
レガシーじゃないasp.netって何だ?
2017/06/28(水) 08:14:33.61ID:S1GQbAFUd
>>468
Web formsのこと?Windows formsで飯食ってたやつらが手出しやすいようにってことじゃねーの?
2017/06/28(水) 08:14:44.38ID:w/2VCFQw0
>>468
そりゃお前webサービスがボタン一発コンパイルでできる超絶機能だし
phpは結構わかってないと動かせないよね
2017/06/28(水) 08:21:23.80ID:kDq6sXUta
なんでPHSに合わせなきゃなんないの?
2017/06/28(水) 09:22:04.09ID:+bF+mAil0
レガシーなのかレガシーじゃないのか知らないが
ASP.NET、HTMLデザイナーと.NETプログラマとで、上手に分業できるいい言語だと思うけどなー
474デフォルトの名無しさん (アウアウカー Sa6b-yeEX)
垢版 |
2017/06/28(水) 11:51:02.56ID:BH39HJOwa
質問失礼します
PC(C#アプリケーション )から外付けのIOポートの切り替わりを確認したいのですが、どういった感じの処理をすればいいでしょうか
IOポートの確認はできる前提として、それが一定の周期(100mS)できちんとON/OFFして動いているかを判定したいです
参考意見で構いませんのでよろしくお願いします
2017/06/28(水) 11:58:44.78ID:UL/dJT7Ra
そもそも外付けのIOポートとはなんなのかを書けよ
2017/06/28(水) 11:59:52.37ID:P09sdn8I0
>>474
ポート確認用の専用タスクを作って、100ms毎にポートを確認し
変化があったらイベントを発行するのが良いんじゃないの?
2017/06/28(水) 12:00:49.73ID:UL/dJT7Ra
ロジアナの仕事だろ
そんなん
2017/06/28(水) 12:18:33.00ID:kl/WEkBuM
>>473
それはMVCの方だ
自動生成コードやインフラコードでHTMLかゲロまみれになるのが従来の方
2017/06/28(水) 12:37:27.33ID:7gqvDpUwa
>>474
質問が曖昧過ぎるけど、入力の周期とかデューティー比を監視したいってことなら、
GPIOの状態の取得方法(ボードの仕様)にもよるし要求される精度にもよるけど、
Windowsだけでは難しいと思った方がいいんじゃない?
2017/06/28(水) 12:45:44.45ID:UL/dJT7Ra
windowsともかかれてないからあいまい
PC上でc#が動くリアルタイムOS使ってるかもしれない
481デフォルトの名無しさん (アウアウカー Sa6b-yeEX)
垢版 |
2017/06/28(水) 13:10:10.61ID:3p9zCna+a
>>474です
曖昧な質問ですみませんでした
まだ検討段階でWindows機のアプリケーションからの操作で外付けのマイコンの状態を簡易的にモニタリングしつつ処理をと考えてたのですが、例えばそういうことをするにはどうしたらいいのか参考までにお聞きしときたかったのです
>>476さんのような形になるのかなと考えてはいたのですがイベント発生の時間差で判定するのか、はたまたもっといい方法があるのか事前に知っておきたかった次第です
2017/06/28(水) 13:24:26.37ID:QXyxvRuc0
最近のICEは、インターフェイス内にCPUが入ってて、
そいつが仲介してる。
インターフェイスからPC間はUSBシリアル通信で、
インターフェイスからマイコン間は低レベルシリアル通信をしてるな。
リセット信号でマイコンを止め、低レベルシリアル通信で、
中身をトレースし、インターフェイス内にいったんキャッシュし、
そいつをPCに送ってる感じだな。
2017/06/28(水) 20:37:09.67ID:F1IECJZL0
>>481
WindowsはリアルタイムOSじゃないので、アプリでポートをポーリングしても、なんとなくの時間精度でしか監視出来ないよ。
一定周期でバッファにサンプリングしてくれるIOボードでも使えば良いんだろうけど。
2017/06/28(水) 21:43:37.85ID:FyhUFKry0
「マイコンがシリアルポート互換のパルスを出し続ける」なら、
安く買える『FT232の基板』をつないで、でSerialPortクラスで受信できる
2017/06/29(木) 07:11:40.23ID:seAf2DI60
FT232系はニセモノ注意!
うちもえらい目にあったよ・・
2017/06/29(木) 12:43:54.66ID:J1ToM3nLa
>>485
FTDIの製品シェアも実績もあるからお宅が何か勘違いしてるだけだと思うよw
2017/06/29(木) 12:58:09.09ID:YLVns9yBH
FT232って複数デバイスの制御できない
って噂あるけど本当?
全然問題なく制御できてるんですけど
2017/06/29(木) 13:00:38.94ID:YLVns9yBH
FT232を複数枚繋げて同時制御だ
日本語意味不明スマン●| ̄|_
2017/06/29(木) 13:32:48.20ID:jJBoSdE30
COMポート番号でしか識別出来ないから、
機器が入れ替わってもPC側からじゃわからんってだけじゃね?
2017/06/29(木) 16:01:36.08ID:x/W/MEgba
>>487
複数のデバイスが全部同じ識別情報(VID, PID, iSerialNumber)を持ってたらそうなるね
2017/06/29(木) 16:02:47.89ID:YLVns9yBH
>>489
gpio付きだからそれは解決できる
Driver も複数デバイス握れるし
(プロセスは分けるけど)

何だろうか???
2017/06/29(木) 17:09:13.23ID:wGgfLCtF0
***SLAMO***

}

000-"F","TAP","0","1M","L","E-07"/0B"[9BA%]"^"2*73B"="0"/"9GA"
001-"Do"[[[%9DE=HUF%%!%$0B1OTU"NE"]]]<\b>
002-<<%!!!HNDEL%!0DAI@$7[1B]!0#!@>>
3000-{{1\B%HUF!0$$\%6/0Q\%6/GA[[7BU]]%9TE!%$en$}}


---

[[[C%%]]]
}

000-"5802"/"α"="0.1888412376155482"%en{
493デフォルトの名無しさん (アウアウカー Sae9-nIbb)
垢版 |
2017/06/29(木) 20:46:58.12ID:f7/aluE/a
複数の非同期スレッドからひとつのメソッドを実行したいのですが、このメソッドが実行されているとき(ビジー状態とします)他のスレッドからの呼び出しが実行されないようにするにはどうしたらいいでしょうか
ただその呼び出し自体はタスクが溜まっていくかのようにメソッドのビジー状態がとけたら順次実行させたいです
どうしていいかわからず非常に困ってます。。どなたかお助けください
2017/06/29(木) 21:08:01.04ID:WR/vcQFp0
メソッドの呼出にlock掛けたらいいんじゃない?
2017/06/29(木) 21:15:47.88ID:F1YaSrsh0
>>493
複数の非同期スレッドがそのスレッドAを叩くんじゃなくて
スレッドAが複数の非同期スレッドを訪ねて動くようにしろ
2017/06/29(木) 21:44:23.57ID:OQ0Ch0kw0
queueに要求積んで
実行結果は他の何かに渡してもらうとか
(CallBack関数実行してもらうとかでも良いだろうし)
2017/06/29(木) 21:45:24.62ID:R2mIG4UQ0
わからんけど
非同期スレッドがメソッドを呼ぶときはフラグだけ立てる
タイマーでフラグをチェックしてフラグが立ってたら順次実行
2017/06/29(木) 21:47:02.93ID:oFkBbWzId
>>497
それは恐らくアンチパターン
2017/06/29(木) 22:06:41.15ID:x/W/MEgba
素直に質問を読むかぎり>>494の言う通り排他ロックで解決する問題としか思えんけど
500デフォルトの名無しさん (アウアウカー Sae9-nIbb)
垢版 |
2017/06/29(木) 22:07:08.30ID:f7/aluE/a
皆さんアドバイスありがとうございます
ちなみにメソッドというのはTcpClientの送信メソッドで
複数のスレッドからサーバーに送信をしたいのですが、おそらくその送信のタイミングが競合を起こしうまく動作してくれません。。
ロックオブジェクトを作ってロックかけてるつもりなんですがうまく機能してないのです
2017/06/29(木) 22:35:25.39ID:F1YaSrsh0
>>495でやればそもそもロックなんて発生しないわけだが
できない理由でもあるのか?
2017/06/29(木) 23:05:29.60ID:BTdfqiMca
ダウンローダーの同時接続数制限みたいなものかと思ったら一つなんだな
lcokはできない

System.Threading.SemaphoreSlimか
503デフォルトの名無しさん (アウアウカー Sae9-nIbb)
垢版 |
2017/06/29(木) 23:25:53.82ID:f7/aluE/a
>>501
ありがとうございます
出来ない理由は私の力不足によるものです
どういった実装になるのか検討がつきません
何か具体的なものありましたらよろしくお願いします

>>502
ありがとうございます
lockは出来ないのですか。。それは更に困りました
System.Threading.SemaphoreSlim
と書かれてるのを調べてみます
2017/06/29(木) 23:49:55.45ID:F1YaSrsh0
>>503
マジかよ


複数非同期スレッド→単一スレッドA

変更後
複数非同期スレッド←単一スレッドA

って依存関係にすれば競合しないだろ
って言ってるんだけど
理解不能か?
2017/06/30(金) 00:05:24.99ID:8hWYjDYsa
またいつもの馬鹿がしょうもないことで威張り腐ってるなw
ばっかじゃねえのこいつ
2017/06/30(金) 00:16:25.32ID:wI8QUjnd0
queueで解決ちゃうの?
2017/06/30(金) 00:19:17.08ID:8Sz1FGh4M
>>500
こういうのはスレッドセーフなキューを使うのが伝統
複数のスレッドからキューにコマンドオブジェクトをエンキューする
処理スレッドはループをぐるぐる回しながらコマンドオブジェクトをデキューして実行する
これは初心者でもわかりやすいが効率は良くない
2017/06/30(金) 00:20:08.64ID:vkcMcAZ50
ええー
わざわざ複数ある方から単一スレッドにアクセスする構造が悪いんじゃんよ
単一スレッドから各スレッドに巡回していけばバッティングおこんねーじゃん
って言ってるだけなのにマジで通じないのかよ残念ぷぅ
2017/06/30(金) 00:21:26.45ID:4HtEPBqY0
BlockingCollectionやConcurrentQueueでいいんじゃね
510デフォルトの名無しさん (ワッチョイ 5d23-nIbb)
垢版 |
2017/06/30(金) 00:23:25.92ID:SpH8vRbw0
キューでもいいが、SemaphoreSlimでスレッド制限かけたほうがシンプルにはなりそう。知らんけど
2017/06/30(金) 00:34:20.89ID:fpnpIAui0
>>510
それ普通のロックや
2017/06/30(金) 07:06:40.25ID:z9Hs41t20
しつこくてすまんが、FT232のニセモノ問題を知らない人も多そうなので、一応。
アキバとかで売ってるやつだけじゃなくて、うちみたいに某商社経由で被害にあったケースもあるので。

https://japan.zdnet.com/article/35055706/
2017/06/30(金) 07:09:05.81ID:z9Hs41t20
ちなみに世の中に出回っているFT232の大部分はニセモノなので、
"FT232 偽物"とかでググってみてくれ
2017/06/30(金) 07:41:44.96ID:VDhKv/wIM
>>508
マジで言ってるなら大バカ野郎過ぎる
対象のスレッドが増えたり減ったりする度にスレッドAに手を加えるとかあり得んわ
2017/06/30(金) 07:47:46.41ID:vkcMcAZ50
>>514
は?そんなの一度仕組み作っちゃえばしめーじゃん
お前はプログラム組んだことあるのか?
2017/06/30(金) 07:49:32.00ID:vkcMcAZ50
昨日から馬鹿すぎて聞くに耐えないな
2017/06/30(金) 09:37:27.51ID:arYqdS+00
C#にエラー値ってありますか?
EPPlusを使ってExcelの値をコピーしているのですが、
WriteSheet.Cells[yy, xx].Value = ReadSheet.Cells[yy, xx].Value;
と記述した時、元セルの値が「=na()」の時、文字列の「#N/A」となってしまいます。
使用するセルに文字列が入っていると不具合となるので、
回避する為にセルを判定して「#N/A」となった時は文字列では無くエラー値を入れたいのですが、
何を入れたら良いかがわかりません。
double.NaNとかで代用では無く、エラー値の時は同じくエラー値が入る様にしたいです。
よろしくお願い致します。
2017/06/30(金) 09:42:17.70ID:J0AXjkMU0
ありません
2017/06/30(金) 10:31:02.73ID:141Xnv8f0
WriteSheet.Cells[yy, xx].Formula = "=NA()";
2017/06/30(金) 10:31:22.06ID:YD6uFwbUM
ヌルポ
2017/06/30(金) 10:39:07.92ID:W0OUnv8/0
>>520
ガッ
2017/06/30(金) 12:07:15.26ID:arYqdS+00
>>519
直りました、ありがとうございます。
2017/06/30(金) 12:19:52.56ID:tSIy+uHPa
何度も言うけど、質問文を普通に読む限りlockで解決する問題としか読めないけど、
質問者が明示的に言ってもいない要件を勝手に妄想して無駄に問題を複雑にして
何か意味あるのかね。
2017/06/30(金) 13:22:15.27ID:vkcMcAZ50
>>523
lockだと解決しねーと思うけどな
短サイクルでデータを上げまくるような
プログラムだと十分に上げる隙間ができない限り
データが上げられないスレッドができてくる
根本的な解決方法は単一スレッド側から巡回することだろ
ま、偶然でも動きゃいいのよってんであれば別にこだわらないけどね
でも仕事でやりやがったら俺が監督してたら組み直し必須
2017/06/30(金) 13:35:25.13ID:nrnKInBX0
>偶然でも動きゃいいのよってんであれば
何いってんだ??ロックで偶然とかあるのか??
ロック取得できなければただ待たされるだけだぞ。
2017/06/30(金) 13:36:03.44ID:nrnKInBX0
もちろん、タイムアウト指定してたらタイムアウトするけど。
527デフォルトの名無しさん (アウアウカー Sae9-nIbb)
垢版 |
2017/06/30(金) 14:12:30.99ID:KBnGYkuha
>>500です
レス遅くなりすみません
SemaphoreSlimやらlockやらもう一度調べてみました
結論から言うとどちらでもうまくいってました

tcp側でもう一つ別な要因がありそっちでエラーを出してました

そのエラーはというと連続的にサーバーに送信をしていた為、使用可能なポートを食いつぶしていてしまったものでした
netstatで確認して判明しました
とりあえず上限値とtime_waitの調整でなんとかなりました
皆さんのアドバイス本当に助かりました
また別な問題が起こったらご教示下さい
2017/06/30(金) 14:22:21.77ID:vkcMcAZ50
>>525
あれ、これ状態返すんじゃなくて全部止まっちゃうやつだっけ?
こんなクソコード使うやつ周りにいないから勘違いしてた
論外だな
2017/06/30(金) 14:36:21.80ID:nrnKInBX0
>偶然でも動きゃいいのよってんであれば
ロックで偶然とか意味不明wwwwwwww

ロックの目的わかってねぇのかよww

草生えるわ。
2017/06/30(金) 14:51:30.28ID:vkcMcAZ50
>>529
気になってやってみたけど
やっぱ順番保証されない上に止まっちゃうクソコードで無事死亡じゃん
2017/06/30(金) 15:07:31.36ID:nrnKInBX0
>偶然でも動きゃいいのよってんであれば
ロックで偶然とか意味不明wwwwwwww

ロックの目的わかってねぇのかよww

草生えるわ。

>でも仕事でやりやがったら俺が監督してたら組み直し必須
これが仕事なら馬鹿な上にさらにかっこ悪く話を必死にそらそうとしてる
お前を他の人と交換必須
2017/06/30(金) 15:39:34.88ID:Hr6XSLiS0
>わざわざ複数ある方から単一スレッドにアクセスする構造が悪いんじゃんよ
そもそもココが間違ってるんだよな
lock呼び出してもスレッドが変わるわけないのに・・・

lockで保護されるのは、単一スレッドじゃなくて単一資源だよ
2017/06/30(金) 15:49:27.63ID:vkcMcAZ50
>>531
でもlockもだめだよ
止まっちゃうじゃん
2017/06/30(金) 15:53:11.15ID:k4vTF7VX0
質問者は解決したと言ってるのにくだらねえプライドのせいで引っ込みがつかない社会のゴミ
2017/06/30(金) 15:57:08.81ID:vkcMcAZ50
>>534
いやでもやっぱりlockはだめだよ
2017/06/30(金) 16:00:51.19ID:wP0QbD/U0
駄目なのはおめーだよ
#を頭に突き刺して死ね
■ このスレッドは過去ログ倉庫に格納されています