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


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



1 名前:デフォルトの名無しさん(ワッチョイ 5394-4hBO) mailto:sage [2016/12/27(火) 02:07:41.47 ID:HrGPkQcW0.net]
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

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

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

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

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part125
echo.2ch.net/test/read.cgi/tech/1475930006/

■関連スレ
C#, C♯, C#相談室 Part91
echo.2ch.net/test/read.cgi/tech/1467211515/

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

■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configure

321 名前:デフォルトの名無しさん (ワッチョイ a394-GGaX) mailto:sage [2017/01/22(日) 12:28:22.49 ID:opZW6Xxw0.net]
避けられなくないだろ。避けろよ
「染み出す」ってなんだよ。書くべきじゃない場所に書くな。染み出させるな

322 名前:デフォルトの名無しさん (ワントンキン MM9f-Taza) mailto:sage [2017/01/22(日) 12:37:09.50 ID:4NhSs4FyM.net]
そう
書くべきじゃないところには書くな
これを実践するとEFがビジネスレイヤに染み出してくることはない
EFのスコープはデータアクセスレイヤに限定される
しかしそうなると生ADO.NETに対してそこまで大きな優位性は得られなくなる
生ADO.NETを使った場合でも結局のところデータをビジネスロジックのクラスインスタンスにデータをマップして使うのだから

323 名前:デフォルトの名無しさん (ワッチョイ ff4a-SmTw) mailto:sage [2017/01/22(日) 12:45:18.70 ID:WHkammw20.net]
レイヤ分割してるなら大差ないというのは確かにそう。
DataTableはNULL周りが良くないんよね。XMLWebサービス時代にはお世話になったが。

で、染み出してくるのはPOCOなクラスであってEFではないよ。
POCOなクラスをそのまま使ってるから生じる問題。

DataTableのプロパティのスコープ制御に相当する機能が
EFのモデルには無いと思ってるように聞こえるから、その前提で話をすると。
EF6からはnon-publicなフィールドも、シリアル化可能だから制御可能よ。
private/protectedで隠ぺいしつつ、DBに保存とかも出来る。
6以前でもやろうと思ったら自分でそう書けばできる。

324 名前:デフォルトの名無しさん (ワッチョイ ff4a-SmTw) mailto:sage [2017/01/22(日) 12:48:38.01 ID:WHkammw20.net]
いずれにせよ、便利なとこにだけ目を付けて
そういう問題点まで考えずに導入しちゃう現場の方が問題だろうねw

全publicなプロパティで困ってるならご愁傷様です。

325 名前:デフォルトの名無しさん (アウアウカー Sac7-RtDt) [2017/01/22(日) 12:50:26.90 ID:8/XlH/DIa.net]
おまえらどんな修行積んだらそんななれるんだよ。。
独学やってる俺からみると心折れそうだわ

326 名前:デフォルトの名無しさん (ワッチョイ f3bb-3qL8) mailto:sage [2017/01/22(日) 12:53:59.02 ID:H+suNOjg0.net]
>>307
LINQのサンプル書けば分かる話で、昔から散々言われてたこと。
速度が必要ならLINQ使うな、楽したいならLINQ使え。それだけ。
それをLINQは遅くないだの、C#とC++の速度差はないだのは、全くの捏造、デタラメ。素人の知ったか。

今回の話題で遅いのは画像処理。画像処理に糞遅いLINQ使う馬鹿はいないんだよ、糞ガキ。

327 名前:デフォルトの名無しさん (ワッチョイ ff4a-SmTw) mailto:sage [2017/01/22(日) 13:20:05.54 ID:WHkammw20.net]
>>321
馬鹿にしてるのも、素人発言してるのも俺じゃないのに、
なんでそんな悪態つくのかわからんがwww
ちゃんとワッチョイかID見ろよ

C#やLinqが、C++並みとか早いと言ってるのは俺じゃないぞ
画像処理かつ性能必要なとこで、Linqで組む奴が居たら馬鹿だろ

328 名前:デフォルトの名無しさん (ワッチョイ c33c-5mR9) mailto:sage [2017/01/22(日) 14:03:47.83 ID:W8T+cplZ0.net]
デリゲートってどういうときにどう使ってますか?

使ってみようと思ってるんですけど、、、
パスドラみたいなゲームだとどう使うとよかったりするんですかね?

329 名前:デフォルトの名無しさん (ブーイモ MM1f-wwrd) mailto:sage [2017/01/22(日) 14:31:47.38 ID:q7Ms9629M.net]
>>323
お前がこれまでイベントやLINQやラムダを使ったことがあるなら、お前は既にデリゲートを使っている
デリゲート型の定義は昔の名残みたいなもんで、今更あえて自分でデリゲートを定義する必要はない



330 名前:デフォルトの名無しさん (アウアウウー Sa67-gIHQ) mailto:sage [2017/01/22(日) 15:08:27.54 ID:w8qlDydna.net]
>>323
いきなり人をお前呼ばわりするような奴の話は無視していいと思うw
彼がなぜ見知らぬ他人にそんな横柄な態度を取るのかお察し(略

前にも書いた気がするけど、BCLで実際にどういう使われ方をしているかを見て理解するのが一番早い。
例えばList<T>なんかのSortメソッドにはデリゲート(Comparison<T>)を引数に取るバージョンと
インターフェイス (IComparer<T>)のバージョンがあるが、この2つを比べてみるとか

デリゲートの意義は変数(入れ物)を作れることにある。
int型の変数にintの値を自由に入れることができ、intのリテラルと同じように式の中で使えるように
デリゲート、例えばAction型の変数には引数なし、戻り値なしのメソッドを自由に入れることができ、
普通のメソッド呼び出しと同じように変数の中のメソッドを呼び出すことができる。

331 名前:デフォルトの名無しさん (ササクッテロレ Sp87-5mR9) [2017/01/22(日) 17:22:01.36 ID:9cOLculsp.net]
お二方どうもです!
いまunityやってて、なんか自分で定義して使ってみたいんですけど、わざわざ定義して使う必要もないのかと思ったり思わなかったり、、

332 名前:デフォルトの名無しさん (ワッチョイ a394-GGaX) mailto:sage [2017/01/22(日) 17:39:15.02 ID:opZW6Xxw0.net]
Action や Func という便利な「定義済みデリゲート」があるので
>>325 のいう「 Comparison<T> 」もそう)
いまや、自分で定義する必要はあまりないような…

言葉遣いはぞんざいだったけど、>>324 が言いたいのもそういうことだったのでは

333 名前:デフォルトの名無しさん (ワンミングク MM9f-Taza) mailto:sage [2017/01/22(日) 17:45:53.28 ID:mco4N0ihM.net]
>>323
ストラテジーパターンを使いたいなぁと思った時にめんどくさいからデリゲートとラムダを使おう
その程度の認識でいいよ

334 名前:デフォルトの名無しさん (ワッチョイ 33a1-IReq) mailto:sage [2017/01/22(日) 20:04:36.92 ID:uhRlBKGc0.net]
.の意味ってなに?
スペースと何が違うの?

335 名前:デフォルトの名無しさん (ワッチョイ 0390-waAN) mailto:sage [2017/01/23(月) 22:56:49.49 ID:+/l1sI5v0.net]
自分でhttpwebrequest、httpwebresponseのラッパークラスを作っているんですが、どうも使いづらいです
通信エラーが起きてもResponseCodeわからないですし、例外もうまくキャッチすることができません
こういうクラスってひょっとしてラップしても意味ないですか?
WebrequestやDownloadStringなどを使わないのはCookieなどを付与する必要があるためです

336 名前:デフォルトの名無しさん (ワッチョイ 9377-8QYx) mailto:sage [2017/01/23(月) 23:02:45.38 ID:bI3M8V880.net]
>>330
今からやるならHttpClient

337 名前:デフォルトの名無しさん (ワッチョイ cf9d-3qL8) mailto:sage [2017/01/23(月) 23:36:42.09 ID:iMdxUfkB0.net]
WebClientにCookie持たせる

338 名前:デフォルトの名無しさん (ドコグロ MM7f-j6UX) mailto:sage [2017/01/24(火) 12:50:22.17 ID:HHZbO6egM.net]
>>330
意味がわからん...
自分で作ってるなら使いやすいように作ればいいだけじゃないの?

339 名前:デフォルトの名無しさん (ワッチョイ b30d-516J) [2017/01/25(水) 15:07:13.59 ID:3WJkXYG20.net]
HttpClient WebClient WebRequest HttpRequest の違いがわかりません



340 名前:デフォルトの名無しさん (ワッチョイ 63a4-QGIP) mailto:sage [2017/01/25(水) 22:04:46.00 ID:Bb3u5ckd0.net]
ふーん

341 名前:デフォルトの名無しさん (ワッチョイ 33d6-3qL8) mailto:sage [2017/01/25(水) 22:18:36.99 ID:W75ZhGr50.net]
>>334
聞く前にググれ

342 名前:デフォルトの名無しさん (アウアウイー Sa53-T3y8) mailto:sage [2017/01/26(木) 07:18:39.25 ID:hf6GrTPoa.net]
>>334
ググったなんて日本語が分からなかったの?

343 名前:デフォルトの名無しさん (ワッチョイ 2613-uaQk) mailto:sage [2017/01/26(木) 09:58:48.02 ID:sSYf7dfw0.net]
>>337
ha?

344 名前:デフォルトの名無しさん (ササクッテロラ Sp13-YLIH) mailto:sage [2017/01/27(金) 02:09:00.56 ID:mwRO9ggOp.net]
TextBoxの文字をクリックしたときにその行に頭が特定の文字ならアクションを起こすようなものを作りたいのですが
TextBoxクラスのGetCharIndexFromPosition(Point)で文字を取得するとクリック位置が文字の上から外れた場所でも取得できてしまいます
文字上でクリックされた時のみを感知したいのですが何かいい方法があれば教えてください

345 名前:デフォルトの名無しさん (ワッチョイ 1ad4-AZYz) mailto:sage [2017/01/27(金) 12:09:25.78 ID:7rtouHaU0.net]
検索(SQLを投げた)結果を非同期でフォーム表示させようとしてます。

SqlCommandを組み立ててBeginExecuteReaderしました。
AsyncCallback 先で、EndExecuteReaderを実行し
DataTableに収納させるまではデバッガで動作確認できました。

ここからが問題なのですが
DataTableの内容をForm(DataGridView)で表示されようと思いました。
DataGridViewが貼り付いているFormをnewで生成し、DataGridView.DataSourceにDataTableを入れました。

最後にForm.Showでフォームが開くことを期待したのですが、フォームの枠が出るものの中身が真っ白
キャプションは「応答なし」と出て表示も操作もできません。

最初にBeginExecuteReaderした側のメインスレッドは普通に動いてます。
どうやったら、AsyncCallback 先でフォームを新規表示させることができるんでしょうか。

346 名前:デフォルトの名無しさん (ワッチョイ d3c0-y5A3) mailto:sage [2017/01/27(金) 13:41:41.66 ID:f0Kj2+Uu0.net]
>>340
デバッガ使っているならForm.ShowのところでDataGridView.DataSourceにDataTableが入っているか見てみれば?

347 名前:デフォルトの名無しさん (ワッチョイ 9719-VXgO) mailto:sage [2017/01/27(金) 14:04:14.64 ID:FcmXFO0M0.net]
今更AsyncCallback系とかどんな環境なのやら
サブスレッドでForm触るとろくなことにならないから
AsyncCallback内で全データ取得
→FormとかのBeginInvokeでメインスレッドでフォーム作って表示

348 名前:デフォルトの名無しさん (ワッチョイ 1ad4-AZYz) mailto:sage [2017/01/27(金) 14:20:45.68 ID:7rtouHaU0.net]
>>341
そこは問題ないです
描画のところでサブスレッドに順番が回ってこないぽい感じです

>>342
>今更AsyncCallback系とかどんな環境なのやら

イマドキは別の方法があるんでしょうか
確かに、Callbackは面倒です。゜

やりたいのは、時間のかかるExecuteReaderで全てがブロックされることを防ぎたい、ってことです

349 名前:デフォルトの名無しさん (スッップ Sdca-OKVk) mailto:sage [2017/01/27(金) 19:49:21.84 ID:oQLdhHNUd.net]
>>343
.NET Frameworkのバージョンいくつよ?



350 名前:デフォルトの名無しさん (ワッチョイ af4a-y5A3) [2017/01/27(金) 21:29:15.85 ID:+Ih6k9xI0.net]
質問です。

object o = new List<string>();
このstringのところを文字列(を格納した変数)で指定したいのですが、どうすればいいでしょうか?
object o = new List<"string">(); ← こういうことをやりたい。

よろしくお願いします。

351 名前:デフォルトの名無しさん (ワッチョイ f7dc-ci5U) mailto:sage [2017/01/27(金) 21:35:00.20 ID:sOrVpnzk0.net]
>>345
本当に文字列で指定したいのではなく、動的に型を指定してジェネリックリストを作りたいという要求だと仮定して回答
var argType = typeof(string);
var listType = typeof(List<>).MakeGenericType(argType);
var o = Activator.CreateInstance(listType);

352 名前:デフォルトの名無しさん (ワッチョイ af4a-y5A3) mailto:sage [2017/01/27(金) 21:37:34.16 ID:+Ih6k9xI0.net]
>>346
早速の返答ありがとうございます。
そういう意図で合っていると思いますが、その3行をぱっと見では理解不能なので、テストしてきます。

353 名前:デフォルトの名無しさん (ワッチョイ af4a-y5A3) mailto:sage [2017/01/27(金) 21:59:53.20 ID:+Ih6k9xI0.net]
>>346
申し訳ないです、質問で出した例えが悪かったです。
本当にやりたいのはJSONのデコードでなんですが、JSON.NETを使って
var o = JsonConvert.DeserializeObject<Hoge>(json);
このHogeの部分を動的にしたいのです。

354 名前:デフォルトの名無しさん (ワッチョイ 2b4a-H6k8) mailto:sage [2017/01/27(金) 22:04:04.24 ID:7pKAIIad0.net]
>>348
Hogeの数だけifかswitchで分ければいいんじゃないか? []
[ここ壊れてます]

356 名前:デフォルトの名無しさん (ワッチョイ af4a-y5A3) mailto:sage [2017/01/27(金) 22:09:45.37 ID:+Ih6k9xI0.net]
>>349
ずらずらと並べて書き始めて、
ふと動的に出来ないものかと思ってしまいましたが、
素直にそうやった方が手っ取り早いですかね。

ありがとうございました。

357 名前:デフォルトの名無しさん (ワッチョイ f7dc-ci5U) mailto:sage [2017/01/27(金) 22:09:50.40 ID:sOrVpnzk0.net]
>>348
それを動的にやって何がしたいのか激しく疑問
どのみちobject型として扱うしかないんだから DeserializeObject(string)

358 名前: でobject型にデシリアライズすればいいだろ
>>349と被ったが、後で as や is でHogeにダウンキャストするんだったらその選択肢は予め決まってるはずだから、
switch (str) {
case “Hoge”: type = typeof(Hoge); break;
case ・・・
}
みたいにすればいいだけ
それでも本当にどうしても文字列で指定しなきゃいけないというなら
Type.GetType(“俺の名前空間.” + str) でできなくはないけど、まず意味はないと思う
[]
[ここ壊れてます]

359 名前:デフォルトの名無しさん (ワッチョイ af4a-y5A3) mailto:sage [2017/01/27(金) 22:50:37.80 ID:+Ih6k9xI0.net]
>>351
> それを動的にやって何がしたいのか激しく疑問

自分も質問文を書きながら、そう思われるだろうなと思っていました。
たぶん、こんなことをしたいと思いつく考え方が、そもそも間違いの可能性が高そうなのですが、
なぜこういうことを思いついたかというと、一つの問い合わせに対して返ってくるJSONの型が
複数あったりするので、どうやれば上手くまとまるかな? と考えたのがはじまり。
成功時→ {"person":{"name":"だれそれ","age":20}}
失敗時→ {"noresponse":{"message":"該当なし"}}
エラー→ {"error":{"number":1,"message":"error message."}}

頭の文字列(personなど)引っ張り出して、対応する型名(Person)をHashtableなんかから引っ張り出せばいいかなと。
hashtable.Add("person","Person");
hashtable.Add("error","Error");
...

object Json2Object(string json)
{
string typename = Regex.Match(json, @"\{""([^""]+)").Groups[1].Value
var o = JsonConvert.DeserializeObject<$$hashtable[typename]$$> (json);
return o;
}

呼び出した側では結局as is しますが、こんな発想自体ナンセンスですか?



360 名前:デフォルトの名無しさん (ワッチョイ f7dc-AomC) mailto:sage [2017/01/27(金) 22:55:29.64 ID:sOrVpnzk0.net]
>>352
結局呼び出し元でキャストするんならJson2Objectをジェネリックメソッドにすればいいだけでは?

361 名前:352 (ワッチョイ f7dc-ci5U) mailto:sage [2017/01/27(金) 23:00:09.77 ID:sOrVpnzk0.net]
いやすまんJSONに含まれるフィールドに応じて型を変えたいってことか
単に Dictionary<string, Type> でよくね?

362 名前:デフォルトの名無しさん (ワッチョイ af4a-y5A3) mailto:sage [2017/01/27(金) 23:07:41.42 ID:+Ih6k9xI0.net]
>>354
なんどもありがとうです。
dictionary.Add("person",typeof(Person));
var o = JsonConvert.DeserializeObject<dictionary["person"]>(json);
と言うことでしょうか?
VS2015 .NET4.6 では出来なさそうなのですが。

363 名前:デフォルトの名無しさん (ワッチョイ f7dc-ci5U) mailto:sage [2017/01/27(金) 23:25:42.83 ID:sOrVpnzk0.net]
>>355
var o = JsonConvert.DeserializeObject(json, dictionary["person"]);

364 名前:デフォルトの名無しさん (ワッチョイ af4a-y5A3) mailto:sage [2017/01/27(金) 23:33:36.50 ID:+Ih6k9xI0.net]
>>356
なんと!!
自分の調べ不足を痛感しました。
ほんとうにありがとうございました。

365 名前:デフォルトの名無しさん (ワッチョイ 2a4a-y5A3) mailto:sage [2017/01/28(土) 00:50:12.18 ID:4RGYrg++0.net]
斜め読みだが
やっぱDictionaryで済む話やなw

366 名前:デフォルトの名無しさん (ワッチョイ 0faf-56sz) mailto:sage [2017/01/28(土) 01:52:46.60 ID:7wXqm53L0.net]
>>339
自己解決しました
表示からは見えなくてもTextBox.Textには改行コードが含まれていたのですね
GetCharIndexFromPosition(Point)で取得したインデックスの文字ををcharに入れてみて初めて気が付きました
欲しい文字の判定時についでにクリックされた文字が\nではないかを調べることで実現できました

367 名前:デフォルトの名無しさん (ワッチョイ af4a-WsPK) mailto:sage [2017/01/28(土) 10:57:29.19 ID:Pp3LUsbs0.net]
zip内の画像ファイルを展開せずに閲覧する場合に基本クラスとその他のライブラリで速度に違いはあるんでしょうか?

368 名前:デフォルトの名無しさん (ワッチョイ 6b64-cWHx) mailto:sage [2017/01/28(土) 11:05:01.86 ID:1xyPMcX/0.net]
もっと詳しく、丁寧に質問して

369 名前:デフォルトの名無しさん (ワッチョイ af4a-WsPK) mailto:sage [2017/01/28(土) 11:26:44.22 ID:Pp3LUsbs0.net]
zipファイルに格納された画像ファイル(jpgやpngやbmpやgif等)を展開せずにストリームで読み込む場合に
基本クラスであるZipFileクラスやZipArchiveクラスを使用した場合と、
#ziplibやDotNetZipやJ#のvjslib.dll等のライブラリを使用した場合では速度に有意な差が出るのでしょうか?



370 名前:デフォルトの名無しさん (アウアウウー Sa7f-//rF) mailto:sage [2017/01/28(土) 12:01:12.08 ID:XpAKmUmza.net]
実装に差あるから、有意な差はでるだろうな
問題になるほどその差が大きいとは思えないが

371 名前:デフォルトの名無しさん (ワッチョイ 7e5e-y5A3) mailto:sage [2017/01/28(土) 12:04:25.80 ID:s1e/PAHl0.net]
>>362
自分で比較してみればいいじゃん
展開でそんなに差は出ないと思うけど※個人の感想です、ってしかならない
なんで画像ファイル限定なのか知らんけど
pngやjpgだとzipには無圧縮で入っていることが多いからそのまま展開されずに読みだされるけど、その手の話かな?

372 名前:デフォルトの名無しさん (ワッチョイ af4a-WsPK) mailto:sage [2017/01/28(土) 12:16:07.03 ID:Pp3LUsbs0.net]
>>363
大した差が無いようであれば基本クラスを使おうと思います

>>364
>pngやjpgだとzipには無圧縮で入っていることが多いからそのまま展開されずに読みだされるけど、その手の話かな?
そうです

基本クラスと#ziplibは試したのですが差が有るような無いような微妙な感じでした

373 名前:デフォルトの名無しさん (ワッチョイ 9777-QkVH) mailto:sage [2017/01/28(土) 12:20:54.91 ID:GpK52peC0.net]
>>365
基本クラスって言い方は紛らわしい。継承関連かと勘違いする。
標準のクラスとか言ってくれ。

374 名前:デフォルトの名無しさん (ワッチョイ 2b4a-H6k8) mailto:sage [2017/01/28(土) 15:14:39.72 ID:XnHJw37P0.net]
>>365
目的はなんなん?

375 名前:デフォルトの名無しさん (ワッチョイ af4a-WsPK) mailto:sage [2017/01/28(土) 21:03:02.05 ID:Pp3LUsbs0.net]
>>367
漫画ビューワですが

376 名前:デフォルトの名無しさん (ワッチョイ 0a4c-cWHx) mailto:sage [2017/01/28(土) 22:28:40.58 ID:46h3M0fs0.net]
その漫画ビューアが殆ど完成しているのであれば、基本クラスと他のライブラリのスペック差を測れば良いんじゃね?

そこまで大きく実装かわらんでしょ?

377 名前:デフォルトの名無しさん (ワッチョイ 7e9d-AZYz) mailto:sage [2017/01/29(日) 03:26:17.34 ID:EZgBqwJb0.net]
WebClientでHeadersにIf-Modified-Sinceを設定してDownloadFileとかやると
以下の例外が起きてしまいます

'If-Modified-Since' ヘッダーは、適切なプロパティまたはメソッドを使用して変更する必要があります。
パラメーター名:name

ヘルプによるとWebClientはIf-Modified-Sinceを設定できないようなのですが
HttpWebRequestを使わずにWebClientだけでなんとかなりませんか?

378 名前:デフォルトの名無しさん (ワッチョイ 6f7b-TK3D) mailto:sage [2017/01/29(日) 11:34:33.85 ID:I0IcYz370.net]
派生させてGetWebRequestオーバーライドしてそこで追加すればいいけど
まあ無駄だな
HttpClientに移行しよう

379 名前:デフォルトの名無しさん (ワッチョイ 1f0d-VFvX) [2017/01/29(日) 11:40:15.08 ID:6efjD1Fp0.net]
HttpClient WebClient WebRequest HttpRequest の違いがわかりません



380 名前:デフォルトの名無しさん (ワッチョイ bfd6-AZYz) mailto:sage [2017/01/29(日) 11:59:58.20 ID:lTC0Slsj0.net]
まーたお前か

381 名前:デフォルトの名無しさん (ワッチョイ 5ad4-B+LO) mailto:sage [2017/01/29(日) 18:52:35.60 ID:yL6xb8U50.net]
>>372

WebClientとWebRequestの違いはWebClientのが簡易。
WebClientはタイムアウトの設定ができない。
WebRequestはタイムアウトの設定がある。

382 名前:デフォルトの名無しさん (ワッチョイ 1f0d-VFvX) [2017/01/29(日) 22:42:03.92 ID:6efjD1Fp0.net]
>>374
ありがとうございます
HttpClient WebClient の違いは一体何なのでしょうか?

383 名前:デフォルトの名無しさん (ワッチョイ 5ad4-K8QZ) mailto:sage [2017/01/30(月) 08:21:14.87 ID:rGZEoMYZ0.net]
>>375

HttpClientは私は一度も使ったこと無いけど新しく作られたクラスで
たぶん非同期処理(async/await)で使うことを前提にしたクラスだと思う。
WebClientとWebRequestはGUIソフトで使うにはスレッド内で使わないと固まるけど、
HttpClientはスレッドを使わないでも非同期処理できるということ。

WebClientとWebRequestの違いの追加ですが、
httpヘッダーの取得はWebClientではできないと思う。
httpヘッダーの取得でHTTPステータス・コード、ファイルサイズなどを取得できる。
ファイルサイズ取得によりプログレスバーでダウンロード経過を表示したりとかできる。

384 名前:デフォルトの名無しさん (ワッチョイ 1f0d-VFvX) [2017/01/30(月) 10:37:24.9 ]
[ここ壊れてます]

385 名前:4 ID:U5GM4NUS0.net mailto: >>376
ありがとうございます!
つまり今使うならHttpClientの方が色んな面で優れているので良いというわけですね
[]
[ここ壊れてます]

386 名前:デフォルトの名無しさん (ワッチョイ 1ad4-AZYz) mailto:sage [2017/01/30(月) 11:01:15.30 ID:8jPCKhAg0.net]
>>344
2000機が残ってたので3.5で作りましたが、ようやく全廃できたので、4以降で大丈夫です。
(XP機も一緒に駆逐したので、4.5以降で問題なし)

387 名前:デフォルトの名無しさん (スップ Sdca-OKVk) mailto:sage [2017/01/30(月) 12:00:30.46 ID:lLUdwlJ5d.net]
>>378
まさかとは思うけど、4.0や4.5みたいなサポート切れのFramework使ってないよね?

388 名前:デフォルトの名無しさん (ワッチョイ d3c0-y5A3) mailto:sage [2017/01/30(月) 12:13:50.48 ID:b9p90kqg0.net]
4.0以下が統一環境になっている俺社の悪口はやめろ

389 名前:デフォルトの名無しさん (ワッチョイ 1ad4-AZYz) mailto:sage [2017/01/30(月) 12:55:47.69 ID:8jPCKhAg0.net]
VB5やVB6で書かれたプロジェクトも未だに保守してるけど



390 名前:デフォルトの名無しさん (ワッチョイ 5b49-QkVH) mailto:sage [2017/01/30(月) 20:36:51.27 ID:SB7dmMyN0.net]
>>377
その認識でOK
HttpClientは高機能なのにとても使いやすくなった

391 名前:デフォルトの名無しさん (JP 0H13-zSxl) mailto:sage [2017/01/31(火) 00:28:21.39 ID:WN418v1sH.net]
WebBrowser使ってるんだけど、HttpClientで取得してWebBrowserに表示のほうがいいのかな
一応WebBrowserでもasyncで取得はしてるんだが
あとAjaxにも対応はしてる

392 名前:デフォルトの名無しさん (ワッチョイ ea30-UZfv) mailto:sage [2017/01/31(火) 08:53:34.35 ID:AhlWkjVU0.net]
目的達成できてるなら別に変える必要ねーじゃん
悪いとは言わないけど効率の悪い思考だ

393 名前:デフォルトの名無しさん (ワッチョイ af4a-y5A3) mailto:sage [2017/01/31(火) 21:52:08.03 ID:H4Wkov650.net]
using (HttpClient client = new HttpClient())
{
client.Timeout = Timeout.InfiniteTimeSpan;
using (var stream = await client.GetStreamAsync(url).ConfigureAwait(false))
using (var reader = new StreamReader(stream))
{
while (!reader.EndOfStream)
{
var task = reader.ReadLineAsync();
if (task.Wait(3000))
{
/*通常の処理*/
}
else
{
/*タイムアウト時の処理*/
break;
}
}
}
}

HTTPでのストリーミング受信をこのような感じで受け取るようにしました。
無通信が一定期間(上記だと3秒)あればタイムアウトさせているつもりなのですが、
3秒以上の無通信期間をHTTPホスト側で設けてみても、いっこうにタイムアウトせずに待ち続けています。
task.Wait()の代わりにTask.WaitAny()やTask.WhenAny()なども試してみましたが、
タイムアウト側へ処理が行かないのです。
もっと単純にvar task = Task.Delay(5000);ってやると、タイムアウト側へ処理が流れます。
HttpClientの時だけうまくいかない?
HTTPホスト側のスクリプトはPHPで待機時間を1秒ずつsleep()時間を増やしながらループさせていて、
ホスト側はまず間違いないと思っています。
よろしくお願いします。

394 名前:デフォルトの名無しさん (ブーイモ MMca-AomC) mailto:sage [2017/02/01(水) 08:46:58.23 ID:/3Lab+YmM.net]
>>385
CancelationToken渡してTask.Delayがタイムアウトしたらキャンセルすれば

395 名前:デフォルトの名無しさん (ワッチョイ af37-AZYz) mailto:sage [2017/02/01(水) 11:47:22.62 ID:3Z+GxYTF0.net]
paiza ioでC#が始まりました
爆発的にC#人口が増えると思います

396 名前:デフォルトの名無しさん (JP 0Ha3-y5A3) mailto:sage [2017/02/01(水) 12:00:51.68 ID:+pDV2e5ZH.net]
現状別に少なくないのに
爆発的に増やせるpaizaってどんな影響力持ってんだよ

397 名前:デフォルトの名無しさん (ワッチョイ 2a23-y5A3) mailto:sage [2017/02/01(水) 12:58:05.37 ID:G1eAOkHI0.net]
>>385
1. client.Timeoutに無限大じゃなくて3秒をセットする
2.処理待ちはストリームリーダーじゃなくてhttpclientで発生しているから、今の処理は無駄なので、ReadLineAsyncはawaitします
3.タイム・アウトすると例外が発生するからハンドリングして処理してください

398 名前:デフォルトの名無しさん (ワントンキン MM1a-FuHd) mailto:sage [2017/02/01(水) 13:37:46.83 ID:E2USh33dM.net]
相談させてください。

別プロセスを実行し、そのExitCodeをチェックしていますが、間歇でC0000005hが返ってきます。
このコード自体はアクセス違反らしいですが、回避する方法はないでしょうか?

ProcessStartInfo psInfo = new ProcessStartInfo();
psInfo.FileName = "〜.exe";
psInfo.CreateNoWindow = true;
psInfo.UseShellExecute = false;
psInfo.RedirectStandardOutupt = true;
psInfo.RedirectStandardError = true;

Process p = Process.Start(psInfo);
p.WaitForExit();

int code = p.ExitCode;

p.Close();

399 名前:デフォルトの名無しさん (アウアウウー Sa7f-//rF) mailto:sage [2017/02/01(水) 14:05:38.83 ID:ItKIvr6ga.net]
またPickitか?切り出すと分からないから、ソースコードというかプロジェクトまるごとどっかにうpしろ



400 名前:デフォルトの名無しさん (ワッチョイ 9719-QC3X) mailto:sage [2017/02/01(水) 14:32:56.95 ID:YUyrzX090.net]
起動される側の問題なんだから起動する側ではなんもできん

401 名前:デフォルトの名無しさん (ワッチョイ af4a-y5A3) mailto:sage [2017/02/01(水) 15:50:40.89 ID:0UxsMyd00.net]
レスありがとうございます。

>>386
なんとなくスマートじゃなさそうな気がしていましたが、ちょっとやってみます。

>>389
やはり2番のそれなんですね。なんとなくそうじゃないかなと思い始めていました。
でも、1番のclient.Timeoutに3秒をセットすると、ホストとの接続が3秒で切れてしまいます。
ループ内のReadLineAsync()で1行ずつ受信できている間は永遠に接続して、
1行受信する間が3秒以上開いたら、回線もしくはホスト側のトラブルの可能性ありとして
受信を見送りいったんループを抜けたいのです。
もう一度2番の内容を念頭に置いてソースコードを見直してみます。

ありがとうございました。

402 名前:デフォルトの名無しさん (ワッチョイ 5b90-Ve17) mailto:sage [2017/02/01(水) 15:55:16.40 ID:3kHXSGfF0.net]
LINQを使ってGroupBox内のでどのRadioButtonが選択されているか知りたいのですがそういったことはできますか?

403 名前:デフォルトの名無しさん (ワッチョイ 0a4c-ZNcG) mailto:sage [2017/02/01(水) 16:02:24.19 ID:jnCvpXDY0.net]
その前に、ラジオボタンのCheckedChangedイベントを共通にしちゃダメか?
そいで、senderで判断しちゃ?

404 名前:デフォルトの名無しさん (アウアウウー Sa7f-BDy3) mailto:sage [2017/02/01(水) 16:33:48.49 ID:l+tZDtqWa.net]
>>394
こういうの?
LINQ苦手だからもっと簡単に書けるかもしれん...
var r = gb.Controls.Cast<Control>().Where(x => x is RadioButton).Cast<RadioButton>().FirstOrDefault(x => x.Checked);

405 名前:デフォルトの名無しさん (ワッチョイ f7dc-ci5U) mailto:sage [2017/02/01(水) 16:42:08.74 ID:2EAgbNLS0.net]
>>396
OfType使えよ

406 名前:デフォルトの名無しさん (ワッチョイ 5b90-Ve17) mailto:sage [2017/02/01(水) 16:59:16.27 ID:3kHXSGfF0.net]
自己解決しました。こうなりました
var check = groupBox1.Controls.OfType<RadioButton>().Where(r => r.Checked == true);

>>395
LINQでCheckChangedイベントを追加するようにしました

407 名前:デフォルトの名無しさん (アウアウウー Sa7f-BDy3) mailto:sage [2017/02/01(水) 17:25:56.68 ID:l+tZDtqWa.net]
>>397
あw

408 名前:デフォルトの名無しさん (ワントンキン MM1a-FuHd) mailto:sage [2017/02/01(水) 18:24:38.35 ID:E2USh33dM.net]
>390 です。

呼び出される側の問題とのこと、理解しました。

呼び出される側は、VS2005のコンソールアプリです。
中身は外部機器との(多分)ソケット通信等を行うものです。
(外部機器専用のdllを利用するため、中身は分かりませんが)

C0000005hが呼び出し元に返ってくる場合でも、
呼び出され側のmain()の return xxx;直前のコードは正常であることはコンソール出力で確認しています。

.net framework絡みだとGCが関係してるような記述も目にしましたが、
これだけの情報で、もし原因の目処、もしくは対策/回避策がございましたらアドバイスいただけないでしょうか。

409 名前:デフォルトの名無しさん (ワッチョイ 0a4c-ZNcG) mailto:sage [2017/02/01(水) 19:24:59.53 ID:jnCvpXDY0.net]
dll側でヒープの解放(delete)忘れ、CloseHandle忘れとかなんじゃね



410 名前:デフォルトの名無しさん (ワッチョイ d390-Ve17) mailto:sage [2017/02/01(水) 20:00:35.33 ID:cSMjRhkv0.net]
また質問なんですが
var rb = groupBox1.Controls.OfType<RadioButton>().Where(x => x.Checked == true)
これで取り出した要素なんですが、ここからRadioButtonのNameプロパティを参照したい場合foreach使わないとダメですか?

411 名前:デフォルトの名無しさん (ワッチョイ 0a4c-ZNcG) mailto:sage [2017/02/01(水) 20:15:39.46 ID:jnCvpXDY0.net]
>>402

それ394で全部解決だって。
senderをキャストすれば、そのラジオボタンだから

412 名前:デフォルトの名無しさん (ワッチョイ 0a4c-ZNcG) mailto:sage [2017/02/01(水) 20:21:32.94 ID:jnCvpXDY0.net]
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.radiobutton(v=vs.110).aspx

ここの一番下のサンプルみてみ


あと、rbが選択されたラジオボタンなんよね?

413 名前:デフォルトの名無しさん (ワンミングク MM1a-bF0B) mailto:sage [2017/02/01(水) 20:24:36.92 ID:Q5WgQ/3wM.net]
チェックボックスにはバインドしないの?

414 名前:デフォルトの名無しさん (ワッチョイ d390-Ve17) mailto:sage [2017/02/01(水) 20:26:26.00 ID:cSMjRhkv0.net]
>>403
RadioButtonの共通のCheckChangedイベントじゃなくて別のメソッドから呼びたいんですが・・・
CheckChangedイベントで毎回選択されたものを他の変数に保存したりとかでできそうですが、列挙が一つだけの場合foreachを使わずとも取り出す方法があるなら知りたいと思いまして

415 名前:デフォルトの名無しさん (ワッチョイ d390-Ve17) mailto:sage [2017/02/01(水) 20:38:00.85 ID:cSMjRhkv0.net]
>>404
見ましたけど自分がほしい情報とは違う気がします

416 名前:デフォルトの名無しさん (アウアウウー Sa7f-BDy3) mailto:sage [2017/02/01(水) 20:43:13.76 ID:l+tZDtqWa.net]
>>402
これじゃいかんの?
var name = gb.Controls.OfType<RadioButton>().FirstOrDefault(x => x.Checked)?.Name;

417 名前:デフォルトの名無しさん (ワンミングク MM1a-bF0B) mailto:sage [2017/02/01(水) 20:46:49.32 ID:Q5WgQ/3wM.net]
バインドしないの?

418 名前:デフォルトの名無しさん (ワッチョイ 5b49-QkVH) mailto:sage [2017/02/01(水) 21:28:09.21 ID:wmVXAizR0.net]
>>400
NativeのDLLの関数を呼び出す場合はGCが関係する場合もあるけど、別プロセスを起動する場合は関係ない。

>>401
単純に開放を忘れただけだったら、アクセス違反にはならんだろ。

419 名前:デフォルトの名無しさん (アウアウウー Sa7f-//rF) mailto:sage [2017/02/01(水) 21:30:05.48 ID:ItKIvr6ga.net]
呼んでるexeが、最後にreturn 0x C0000005;をしてる原因をエスパーしてくれってことじゃないのか?



420 名前:デフォルトの名無しさん (ワッチョイ 7e5e-y5A3) mailto:sage [2017/02/01(水) 21:34:07.73 ID:0YuVGhJt0.net]
>>411
return 0x C0000005;とかでなく多分呼び出した先の不正終了
何らかの形で強制終了させられたとかそのあたり

421 名前:デフォルトの名無しさん (ワッチョイ d390-Ve17) mailto:sage [2017/02/01(水) 23:00:22.10 ID:cSMjRhkv0.net]
>>408
そうです、こういうのを探していました






[ 続きを読む ] / [ 携帯版 ]

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

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