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
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 そうです、こういうのを探していました
422 名前:デフォルトの名無しさん (ワッチョイ 6b64-ZNcG) mailto:sage [2017/02/01(水) 23:01:28.57 ID:NPEB4GMb0.net] >>407 var rbまで書いてるから、rb.Nameでもいいよねって事。
423 名前:デフォルトの名無しさん (ワッチョイ d390-Ve17) mailto:sage [2017/02/01(水) 23:33:29.26 ID:cSMjRhkv0.net] >>414 書けませんし、まず型が違います
424 名前:デフォルトの名無しさん (ワントンキン MM1f-1ST5) mailto:sage [2017/02/02(木) 09:38:52.54 ID:F4pSw7TdM.net] >>412 呼び出され側が int code; 〜 Console.WriteLine("code = " + code.ToString()); return code; で、呼び出し元で、標準出力を取得すると code = 0 等となっています。 1台のPC上で、複数の呼び出し元を非同期に実行しています。 この辺りが関係してるのでしょうか? 詳しい情報を出せなくて申し訳ないですが、エスパーしてもらえるとありがたいです。
425 名前:デフォルトの名無しさん (JP 0Ha7-FWOa) mailto:sage [2017/02/02(木) 11:09:28.98 ID:vkBB6VucH.net] アプリケーション設定ってユーザー¥ユーザー名の下に保存されるけど、windowsのログインアカウント変えたらわ設定読み書きできないよね ユーザー¥Defaultの下に保存して読み書きできるようにできないかな?
426 名前:デフォルトの名無しさん (ワッチョイ a390-/j6a) mailto:sage [2017/02/02(木) 12:35:49.22 ID:twb4E7Xn0.net] ffmpegのエンコ設定の介助ツールみたいなのを作っています 今はコマンドラインを作成してそれをProcess.Start()で引数として渡しているんですが、Process.Start()のときに実行ファイルの確認ダイアログが出ます これを出ないようにしたいのですが何か方法はありませんか?
427 名前:デフォルトの名無しさん (JP 0Hff-aC2u) mailto:sage [2017/02/02(木) 12:43:00.80 ID:8Ui/Ypx9H.net] >>417 ユーザーごとの設定はUsers\<ユーザー名>\AppData\Roaming\の下 ユーザーに依存しない設定はProgramData\の下
428 名前:デフォルトの名無しさん (ワッチョイ 3fd4-0MWP) mailto:sage [2017/02/02(木) 12:47:24.46 ID:U1i9H1FA0.net] Defaultは、プロファイルのない新ユーザーが初めてログインしたときの初期値を入れておくとこ
429 名前:デフォルトの名無しさん (JP 0Ha7-FWOa) mailto:sage [2017/02/02(木) 13:08:04.48 ID:vkBB6VucH.net] >>419 それってどこで設定するの? アプリケーション設定のスコープはユーザーかアプリケーションで、アプリケーションだと設定変更できない読み取り専用だよね。 >>420 そういう目的なのか… てっきり全ユーザー用かと思ってた
430 名前:デフォルトの名無しさん (JP 0H27-yene) mailto:sage [2017/02/02(木) 13:16:15.02 ID:K/b9EIy4H.net] むかしはAll UsersってのがあったけどProgramDataになった というか%ALLUSERSPROFILE%を参照せよ
431 名前:デフォルトの名無しさん (ワッチョイ b319-PiNc) mailto:sage [2017/02/02(木) 13:48:00.41 ID:ahVNqXc30.net] user.configは文字通りuser単位なんだからシステム全体向けに保存するわけない https://www.codeproject.com/articles/20917/creating-a-custom-settings-provider ここみたいにSettingsProviderを派生させて任意の場所に保存させるようにすることも一応できるけど 保存処理は自分で書く必要がある バージョニングとかも確か自前実装になるんだったかな
432 名前:デフォルトの名無しさん (ワッチョイ 7f23-yene) mailto:sage [2017/02/02(木) 14:07:29.43 ID:jMAutYAP0.net] >>418 前に作った同種のツールは var info = new ProcessStartInfo(); info.FileName = FFmpegModel.FFmpegPath; info.Arguments = string.Format(" -i \"{0}\" ", _fullname); info.CreateNoWindow = true; info.RedirectStandardOutput = false; info.RedirectStandardError = true; info.UseShellExecute = false; proc.StartInfo = info; proc.Start(); となっていた。
433 名前:デフォルトの名無しさん (ワッチョイ 134a-yene) mailto:sage [2017/02/02(木) 15:42:02.09 ID:TIj28lOD0.net] 解決の報告。 >>385 >>389 さんの2番で指摘されたようにストリームリーダーのreader.ReadLineAsync()で 待っていたのではなかったのですが、whileループ判定のreader.EndOfStreamで待機していました。 そんなわけで、以下のようにすることで無通信タイムアウトor接続終了でループを抜けられました。 while (Task.Run(() => reader.EndOfStream).Wait(3000) && !reader.EndOfStream) ありがとうございました。
434 名前:デフォルトの名無しさん (ワッチョイ 036a-2dgJ) mailto:sage [2017/02/02(木) 15:56:42.85 ID:pMXQtjQo0.net] MSがアプリケーション共通データはProgramDataの下に書けって言ってなかったっけ
435 名前:デフォルトの名無しさん (JP 0Ha7-FWOa) mailto:sage [2017/02/02(木) 16:05:02.97 ID:vkBB6VucH.net] >>423 >>426 ありがとう! ProgramDataの下にeveryoneにフルアクセス権つけて保存するの作った ちとスマホからカキコなのでコード書けないけど、DirectorySecurityオブジェクト作ってDirectory.CreateDirectoryでそのオブジェクトを第二引数に指定してDirectory作成。 そこに自作Classをシリアライズしたファイルを保存したって感じ。