1 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 19:55:44.50 ID:tZmoj8I+.net] 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■関連スレ C#, C♯, C#相談室 Part93 https://mevius.5ch.net/test/read.cgi/tech/1492818720/ ■前スレ ふらっと C#,C♯,C#(初心者用) Part138 https://mevius.5ch.net/test/read.cgi/tech/1528194762/ ■コードを貼る場合は↓を使いましょう。 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/
267 名前:デフォルトの名無しさん [2018/08/28(火) 19:01:48.59 ID:5NsMegki.net] >>233 新しいとこ教えてクレメンス
268 名前:デフォルトの名無しさん [2018/08/28(火) 19:52:33.60 ID:QdKJddNI.net] コンパイラの最適化の問題でしょ? 非同期処理で使うフィールドはいれときゃいいんじゃね
269 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 20:25:43.56 ID:M3D05fOs.net] ちなみに「お作法」という言葉を使う人間が書くコードは間違ってます マメな
270 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 20:43:21.83 ID:sKgj8tWl.net] >>251 もう作成されたILのコード全部確認・検証しとけよ 問題が起こらない方がいいのに何か起こらないと困るように見える
271 名前:デフォルトの名無しさん mailto:sage [2018/08/29(水) 01:22:33.42 ID:4YeISD0k.net] >>251 C#ひいては.NET CILではJITないしAOTのコンパイルにかかる時間など故か ネイティブC/C++程の最適化は行われないので具体例は難しいかもしれません ということでネイティブC++(プログラム全体の最適化は無効)を例にしてみると int n; int main() { n = 1; n = 2; return NO_ERROR; } 上記コードは関数内でn = 1時点を参照してないし、最終的にn = 2じゃんという事で 「n = 1;」が削られマシンコードは「mov dword ptr [n], 2」とリターンコードのみに成ったりします 参照の場合においても変数の値を逐一読み込まずレジスタに保持して使い回すかもしれません これを「volatile int n;」と修飾すれば、そのような最適化は抑制されます C#コンパイラ(C#→CIL)レベルでは読み書きにvolatile.接頭辞などが付く事になる筈 https://msdn.microsoft.com/ja-jp/library/system.reflection.emit.opcodes.volatile ECMA-335やJIS X 3016といった言語仕様にも記載されていますが、排他制御云々ではありません
272 名前:デフォルトの名無しさん mailto:sage [2018/08/29(水) 02:03:21.40 ID:Hgs5A/6b.net] つまり、実行結果が変わる場合があるということ?
273 名前:デフォルトの名無しさん [2018/08/29(水) 03:59:58.56 ID:B+rDuEfA.net] C#のデストラクタってどういう場面で必要なんでしょうか? ネットの記事で見かけたところ C++ではコンストラクタとセットでプログラマがマネージする必要があるが C#ではシステムが自動でやるのであまり重要じゃないとありましたが イマイチよく分かりませんでした Win32API関数をマーシャリングして使用したりするとデストラクタは必要でしょうか? 実はそういうプログラムを自作してずっと使用してるのですが デストラクタを書いてなくても特に問題が発生したことがありません 問題が出ないのはたまたま自分の使用環境が合ってるだけでしょうか? デストラクタを書かないと具体的にどういう不具合が起こるんでしょうか?
274 名前:デフォルトの名無しさん mailto:sage [2018/08/29(水) 05:59:16.57 ID:saiWj2Qp.net] ファイル・データベース・プロセスなどのリソースが解放されないから、 使用メモリサイズが
275 名前:ドンドン大きくなっていく つまり、メモリリーク [] [ここ壊れてます]
276 名前:デフォルトの名無しさん [2018/08/29(水) 09:22:23.43 ID:o37zBcM2.net] >>264 ありがとうございます その「使用メモリサイズ」というのは タスクマネージャーの「メモリ」という所を見ればいいのですか?
277 名前:デフォルトの名無しさん mailto:sage [2018/08/29(水) 09:30:37.55 ID:SgdWV5FD.net] vmmapを使った方が良いかも HeapWalkerを使えるようになればなおよし
278 名前:デフォルトの名無しさん [2018/08/29(水) 09:55:10.31 ID:o37zBcM2.net] >>266 windowsデフォの管理ツールに「リソースモニタ」ていうのもありますね これでもいいのかな? 初耳な分野なので全く分かりませんが調べてみます ありがとうございました
279 名前:デフォルトの名無しさん mailto:sage [2018/08/29(水) 21:29:00.98 ID:xKUAwzTF.net] C♯にて数あるエクセルファイルの中身を読み取りあれこれしたい時、早く開いて読み取って閉じる方法ってありますか?
280 名前:デフォルトの名無しさん mailto:sage [2018/08/29(水) 21:43:41.82 ID:bGCoQXPI.net] >>268 何と比較して?
281 名前:デフォルトの名無しさん mailto:sage [2018/08/29(水) 22:02:30.99 ID:XA15QLm3.net] >>268 「あれこれ」じゃなく具体的に何がしたいか書かないと やりたいことが多くなるほど「じゃあエクセルで直接開いた方が早いね」になるだろうけど
282 名前:デフォルトの名無しさん mailto:sage [2018/08/29(水) 22:14:58.95 ID:dev0xKTh.net] 前提条件やマシン構成で大きく変わるので思いつく手段を全部書いて実測
283 名前:デフォルトの名無しさん [2018/08/30(木) 03:48:10.84 ID:Aa4o8Duk.net] >>268 バイナリーで読み込むのが最速
284 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 07:21:13.96 ID:oIUtx1rS.net] >>270 @シート名の読み込み。 A指定シートの指定列の読み込み。 B指定シートの指定行の読み込み。 こんな感じのを各エクセルに@〜Bを繰り返し行う。 ネットを参考に見て普通に開いて閉じるだと遅くて...
285 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 09:55:38.76 ID:l8OdYu1h.net] >>273 ExcelDataReaderでも満足できないレベルに遅いの? だとしたらほぼ無理かと Excel側で予め必要になる情報をVBAとかでtxtファイルに出力しとくとかで対処するしかなさそう
286 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 12:24:59.82 ID:8MIxRZMr.net] >>273 ネットで参考にした情報はOLEでExcelを起動して読み込む方法かね? それは遅いからOpen XML SDKでも使って直接ファイルを読んだ方がいいね
287 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 17:27:14.97 ID:Cn/2yBNm.net] 質問させてください! VisualStudio2017のC#Formアプリで自分用のテキストエディタを作ろうとしていて、 「改行した時、一行前の行頭に全角スペースがあった場合次の行頭にも全角スペースを挿入する」 というちょっとした自動インデントのような動作をさせたいのが目的です。 探り探りで一応目的の動作をするコードは書けたのですが、 「KeyUpからエンターキーの場合のみ分岐して座標をひとつ戻してから改行かどうかを確かめて、 行数を調べて一文字切り出してからカーソル位置を戻して比較して……」 をはじめとする行程で相当に回りくどいことをやっているような感覚があるので もっとスマートな方法はないものかと思い質問に来ました。 どうぞよろしくお願いします。 https://ideone.com/8J7uBK
288 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 18:25:03.14 ID:iISOYGhU.net] エディタはそんなもん 作るの超めんどい
289 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 18:56:29.70 ID:2QdSuJnz.net] task難しすぎない…? 非同期が難しいのは当然だけどこんな躓いたのc#が初めて
290 名前:デフォルトの名無しさん [2018/08/30(木) 19:01:33.74 ID:16om6f/5.net] スレッドのシーケンシャル図みたいなのに書き出すといいよ まあスレッドセーフな構造を理解してるのが大前提だけど
291 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 19:0
] [ここ壊れてます]
292 名前:5:11.47 ID:syYDPcaO.net mailto: >>278 Taskを使わないと更に難しくなる [] [ここ壊れてます]
293 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 19:16:12.27 ID:r/TRQYs/.net] task自体は簡単だと思うけど async/awaitは誤解したまま使うとハマる
294 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 19:19:23.09 ID:JgfkbZf2.net] >>275 いや普通にOSSのライブラリ使えよ
295 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 19:25:02.55 ID:2+/sJ3kY.net] >>276 読み辛すぎるw っていうか、これ本当にちゃんと動く? KeyUp発生した時点で入力したキーがTextに反映されてる前提になってると思うけどそうだっけ?
296 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 19:34:27.48 ID:r/TRQYs/.net] windowsの仕組み上不定な気がする
297 名前:デフォルトの名無しさん [2018/08/30(木) 20:37:16.45 ID:4drhoSMA.net] >>276 行頭に全角スペースが入力されたときにフラグ立てる というのはどうかな 文字列型フラグ変数に行頭に入力された全角スペースを突っ込んでおいて 改行でフラグ変数の値を行頭に挿入とか 行頭全角スペースが削除されたらフラグも空文字列にしないといけないけど
298 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 20:42:40.52 ID:2QdSuJnz.net] https://ideone.com/0aD1lJ >>278 で質問したものだけどコードで書いたので下の疑問が正しいのか教えてください A:ここで並列にダウンロードできているのか? B:Resultを使うとデッドロックすると聞いたけどawaitしていれば大丈夫?
299 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 21:00:14.61 ID:Assw0OKp.net] >>285 行全部のフラグ作るのとテキスト読み込むときにフラグ作る必要があるが 何万行とかで構成されるテキストでもそれやるの? 動くのなら>>276 の方がまだ楽だと思う
300 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 21:07:07.68 ID:cD6Bz7+B.net] >>282 ん? Open XML SDKってOSSなんだが w https://blogs.technet.microsoft.com/microsoft_office_/2014/06/25/open-xml-sdk-goes-open-source/
301 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 21:24:36.54 ID:VlraDHRu.net] >>288 え、生でそれ使えってか?
302 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 21:26:02.80 ID:Yh+aUVCO.net] >>286 A: DownloadAsyncが真っ当に実装されていれば並列ダウンロードになる (真っ当ではない例: 同期的にダウンロードしてTask.FromResult) B: Task<TResult>.Resultはタスクが終了済みなら即座に値を返すので、デッドロックしない ちなみにTask<TResult>.WhenAllはTask<TResult[]>を返すから return (await Task.WhenAll(tasks)).ToList(); でも行けるはず
303 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 21:26:33.91 ID:qGVo2Ysa.net] Open XML SDK生で使ったことあるけど、もうちょっと頑張れなかったのかと言いたい 中のファイルメモリに乗っけてシートごとの並列処理出来るかと思ってたのに全然だし、セルの位置はR1C1限定とかマジで死ねよ
304 名前:デフォルトの名無しさん [2018/08/30(木) 21:27:27.97 ID:jRU2Egdi.net] >>288 Open XML SDKはWordなんかも含むOffice製品全部のSDKちょっと直感的じゃないから ラッパーで多少はExcel VBAライクなClosedXMLとかNPOIとかの話と思われ
305 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 21:27:50.35 ID:2+/sJ3kY.net] >>276 まあケチ付けるだけなのもあれなんで 俺ならこうかなあ 無駄なフィールドを作らないために無理矢理ラムダ式使ってるけど本当はこういうのよくないかも class TextBoxEx:TextBox { protected string GetIndent(int line) { var s = Lines[line]; var m = Regex.Match(s, @"^[ \t]*"); return m.Value; } protected string GetIndent() { return GetIndent(CaretLine); } public int CaretLine { get { return GetLineFromCharIndex(SelectionStart
306 名前:); } } [] [ここ壊れてます]
307 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 21:28:10.88 ID:2+/sJ3kY.net] protected override void OnKeyDown(KeyEventArgs e) { base.OnKeyDown(e); if(e.KeyCode == Keys.Enter) { var indent = GetIndent(); EventHandler eh = null; eh = (sender, ea) => { TextChanged -= eh; SelectedText = indent; }; TextChanged += eh; } } }
308 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 21:41:05.42 ID:cD6Bz7+B.net] >>289 , >>292 だからそういう話ならもっと便利なOSS書けよって話 >>282 だと単なるバカか文句しか言えないクズにしかならん
309 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 21:46:27.28 ID:2QdSuJnz.net] >>290 勉強になりました c#は書き方いろいろあってむつかしいです
310 名前:デフォルトの名無しさん [2018/08/30(木) 22:15:02.92 ID:jRU2Egdi.net] >>295 >>282 はSDKという単語に対してライブラリという単語を使ったんだだと思うぞ (それにOpen XML SDKはソース公開されてるものの MSしかコミットしてない実質プロプラなのでOSSと呼ぶの違和感あるのもあると思う) >>275 の質問レベルに対してSDKを出すのは それこそもっと便利なOSS書けよって話 ここ初心者スレだぞ
311 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 22:26:00.43 ID:R+j2ccwX.net] >>282 が的外れで意味不明なのが悪いということ
312 名前:デフォルトの名無しさん [2018/08/30(木) 23:39:14.89 ID:4drhoSMA.net] >>287 そう言われるとそうだな もっとよく考えないとダメだったな テキストエディタ舐めてたわ
313 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 00:01:56.93 ID:4iUWs/UZ.net] var config = new ConfigurationBuilder() .AddEnvironmentVariables(prefix: @"XXX_") .Build(); services.Configure<MyOptions>(config.GetSection("MyOptions")); class MyOptions { public int Foo { get; set; } public int Bar { get; set; } } ---env--- export XXX_MYOPTIONS_FOO=1 export XXX_MYOPTIONS_BAR=2 ヒエラルキーを持った設定を環境変数に入れたいのだけどコロンを環境変数の識別子に使うとOSに怒られる アンダーバーにすれば環境変数をセットできるけど今度はIOptionsパターンがヒエラルキーを認識してくれない なんかイケてる対処法ないんか?
314 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 00:12:53.87 ID:0MAifXJX.net] >>299 ギガ単位のテキストファイルを編集できるエディタって意外とないのよね ログファイルとかで需要はありそうなのに 昔、探したけど無かったからけっこう苦労して自作したわ
315 名前:デフォルトの名無しさん [2018/08/31(金) 00:14:40.87 ID:4ZfpOo1s.net] そんなもんをエディタで編集しようというのが そもそもの間違い sedで十分
316 名前:デフォルトの名無しさん [2018/08/31(金) 00:18:44.01 ID:4ZfpOo1s.net] ギガ単位のファイルなんか 結局検索しないと編集箇所を特定することなんかできない もしかしてギガ単位のファイルを目視で編集箇所特定してんの どんだけ頭悪いねんと。。。
317 名前:276 mailto:sage [2018/08/31(金) 03:32:18.34 ID:ogs0aMAV.net] >>277 こんなもんなんですね!? テキスト入力を広げていくだけだから初心者向きだと思って始めたのですが びっくりです……でも組み上げていくのは楽しい…… >>283 >>293 当方プログラミング3日目ゆえ……読み辛くてすまぬ……すまぬ…… コードありがとうございます! すでに用意されているものを組み合わせることしか考えてなかったので Textboxのクラスごと作ってしまう方法は目から鱗でした! GetLineFromCharIndexメソッドの存在すら知らなかったので これだけで無限に簡略化できそうな気がします…… 本当にありがとうございます、色々弄ってみます! >>285 既存のファイルを読み込んだ時に改行しやすくするのが目的なので >>287 さんの言うとおり一行一行フラグ立てていく方式は厳しいかなと思いました……! リアルタイムで少ない文章を入力していくならそのぐらい簡素でも いいと思うのですけれどね! むずかしい! おかげで先に進めそうです、ありがとうございましたー!
318 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 03:47:24.61 ID:ogs0aMAV.net] れんとうしつれいします いざググって調べてclass TextBoxEXの意味を勘違いしていた事に気付いたため レス内容は笑い流してあげてください 正しい意味を知って本当に目からウロコでした ありがとうございました!!
319 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 06:16:33.32 ID:WaaqYsvL.net] >>298 たぶん>>297 と同類でOpen XML SDKがOSSなのを知らなかったんだろうな 実質プロプラとかわけわからんこと口走って恥の上塗りしてるし w
320 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 06:36:54.02 ID:7Lf8QxyM.net] 実質プロプラw
321 名前:デフォルトの名無しさん [2018/08/31(金) 07:41:37.25 ID:Sw5Wccxa.net] >>304 3日目なら他にやることあるだろ
322 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 08:23:57.84 ID:ogs0aMAV.net] >>308 どんな技術も取り敢えず自分がやりたい事から始めて 壁にぶつかったら都度必要な事を調べていけば上手くなると思っているのですが違うのでしょうか……? どうにか自力で一応の形にして目的を実現するところまではやって、 本当にそれが正しいのか調べて見つけることができなかったから質問させて頂いた状態なので 他にやる事と言われても何をすればいいのかわからないです、すみません……
323 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 08:44:51.07 ID:6aCB/3AZ.net] >>304 普通はこんなもんじゃないよ テキストボックスにデータを持たせるんじゃなくて別にプログラム内部にデータを持たせて それを表示に反映させる感じ
324 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 12:29:19.65 ID:iUPXUGud.net] >>309 それでいいんだよ、そうやって覚えていくのが一番いいと思う とにかく作ってみないとわからないからね 作る喜びを感じられれば伸びていく リファクタリングもバージョンアップもどんどん やってみるのがいいと思う
325 名前:デフォルトの名無しさん [2018/08/31(金) 13:51:05.81 ID:Sw5Wccxa.net] >>309 取説読まずにサポセン電話する迷惑なタイプ
326 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 15:13:11.36 ID:ogs0aMAV.net] >>310 な、なるほど! そうすれば一行毎に表示を弄ったりとかの細かい事もできそうですね! でもリアルタイムで打ち込んだデータを内部に移しながら表示領域に戻して……とやるのは結構 大変そうな気がします。世の高機能テキストエディタはそういった苦労の上に作られているのですね……。 >>311 ありがとうございます、頑張ります! 実際スレに貼って頂いたコードの正規表現命令が通らないことで Text.RegularExpressionsの存在を知ったりと無知ゆえの見落としも結構あるのですが、 自分の知識と思いつく検索ワードで詰めれるところまでは自分でやって成長していきたいです! >>312 可能な限り調べきってから問い合わせてはいるのですが なにぶん取説が広辞苑レベルなので……索引力不足、恐縮です どうにもならなくなったらまたご迷惑かけます
327 名前:263 [2018/08/31(金) 16:29:19.58 ID:vo9ITXw3.net] 先日デストラクタについて教えてもらった者ですが やはりメモリリークしてましたwww 起動時は6Mくらいだったのが終了時には10Mになってました 少しだったから大きな問題にならなかったってことですorz でも「実用上は問題無いけどゴミいっぱいまき散らしやがって!」 って怒られますよね・・・ でデストラクタを勉強し始めたのですがさっぱり分からん! マーシャリングして使ってるAPI関数が問題なんだろうとはわかるけど どのタイミグで何処でデストラクトするのかとか IDisposableイベントの発生のさせ方とか C++から勉強しないとダメかな? 先は長いなあ
328 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 16:33:50.31 ID:7EVWbyOU.net] いや6M→10Mはメモリリークしてなくても.NETならそんなもんだぞ 長いことモニタしてればわかるけど、フルGCが走れば減る
329 名前:デフォルトの名無しさん [2018/08/31(金) 16:48:31.15 ID:vo9ITXw3.net] >>315 え?そうなの? その程度じゃメモリリークしてるとは断定できない? もう一度検証してみますだ
330 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 17:39:33.85 ID:cQtmAsyE.net] >>314 つ https://docs.microsoft.com/ja-jp/dotnet/standard/design-guidelines/dispose-pattern ただし和訳は機械翻訳だから読めるなら英語版おすすめ WINAPIで取得したリソースはアンマネージリソースだから、上の記事のComplexResourceHolderのように Dispose(bool disposing)内で、disposingの真偽に関わらずアンマネージリソースを解放するのが正解 あとC++とC#ではどちらもデストラクタという用語はあるが C++のデストラクタはC#ではDisposeが対応する概念 C#のデストラクタはDisposeし忘れた場合の救済措置
331 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 17:43:15.60 ID:dU0KocTd.net] >>314 盛大に勘違いしてそうだけど、C#のデストラクタは そのクラスのインスタンスを利用するプログラマがDisposeを呼ぶコードを 書き忘れた(つまりバグ)場合のフェイルセーフ以上の意味は通常はないっすよ つまりIDisposableを実装しないなら普通はファイナライザも必要ない ファイナライザは何か不思議な力でリークを解決してくれるマジックじゃありませんw 初心者がごちゃごちゃ頭の中でくだらないこと考えても意味ないよ どうせそんなの盛大に間違ってるw そんな暇があったら理解できなくても少しでもドキュメントを読んだ方がいい
332 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 18:08:24.51 ID:eNdvG/21.net] SqlConnectionクラスでDB操作するのですが、ACID特性の担保は設計でやるのでしょうか?SqlConnectionとDBMSが隠蔽してくれるのでしょうか? 複数ユーザー利用時のトランザクションのロックとか自力実装する必要があるのかなと思い
333 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 20:55:02.11 ID:k+Te8Uzr.net] >>310 毎回テキストボックスをクリアして反映するの? それとも差分を抽出してその部文だけ表示を変更するの?
334 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 21:12:25.67 ID:ZwfzJAPn.net] >>316 CLRProfiler使ってちゃんとリークオブジェクトがないか確認してみるといいよ
335 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 21:47:14.81 ID:7EVWbyOU.net] >>319 ACIDはあくまで利用者から見たシステムの性質 一般的なRDBにはACIDを実現するために必要な機能が備わっているが、それを使ってACIDなシステムを作るのはお前自身だ アトミックなトランザクションを使ったからってお前のアプリのリクエスト処理が勝手にアトミックになる訳じゃないぞ
336 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 22:28:21.69 ID:Is8FvumJ.net] >>320 テキストボックスはでかい文字列扱うと遅いから 高性能なの作るなら独自コントロール
337 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 22:34:45.87 ID:Is8FvumJ.net] >>314 c#は空きメモリに余裕がある時は積極的にメモリの回収をしないから、一見リークしてるように見える。 IDisposeの使い方は単純で、使い終わったら自分でDispose()メソッドを呼ぶだけ。 Dispose()を呼び出し忘れた時のためにデストラクタからも呼ぶように書くけど。
338 名前:デフォルトの名無しさん [2018/08/31(金) 22:52:13.57 ID:iUPXUGud.net] >>323 本格的なテキストエディタを作るなら どうしても独自コントロールになるよな テキストボックスじゃデカいファイルだと無理がある
339 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 23:52:12.65 ID:ETlCxkfg.net] C#のデストラクタはおまじない程度の効果と聞いた
340 名前:デフォルトの名無しさん [2018/09/01(土) 01:29:15.12 ID:ZVoFY83K.net] デストラーデっていつ発動するんだっけ?
341 名前:デフォルトの名無しさん mailto:sage [2018/09/01(土) 09:40:22.35 ID:PbkphExB.net] デストラクタはいつ動くかわからないから使い勝手がわるい
342 名前:デフォルトの名無しさん mailto:sage [2018/09/01(土) 10:07:42.55 ID:aEdJ57k5.net] そもそも処理が重いので可能なら使わない方が良い
343 名前:デフォルトの名無しさん mailto:sage [2018/09/01(土) 12:17:11.69 ID:1Fa0uhaD.net] >>323 横から失礼。まったくの素人質問で申し訳ないのですけど 独自コントロールのテキストボックスってKeyDown命令を検知したりして 必要な処理を一つ一つ作っていくんですか? 慣れてきたら挑んでみたいけれど何をどこから調べればいいのかわからないので そのあたりの仕組みやヒントが学べそうなサイトや教本ってあります……?
344 名前:デフォルトの名無しさん mailto:sage [2018/09/01(土) 12:21:41.75 ID:+BAvd4bn.net] >>330 初心者の範疇じゃない さらに言えば中級者の範疇でもない c# avalon editorでググればいい 単体でエディタを自作するのは愚かなこと Visual Studio Codeなどの拡張機能を作るのが正しい
345 名前:デフォルトの名無しさん mailto:sage [2018/09/01(土) 12:26:00.33 ID:HRxiLrgz.net] オープンソースのコードエディタのソースを見れば参考になるかもね 言語は違うけどVSCodeやEclipseなど
346 名前:デフォルトの名無しさん [2018/09/01(土) 12:28:04.00 ID:RGySrVo/.net] メモリ解放の部分だけC++で作成して呼び出せないの? どう呼び出してメモリのどの部分をどう開放させれるのかとか一切しらんけど
347 名前:デフォルトの名無しさん mailto:sage [2018/09/01(土) 12:31:07.58 ID:nKX/MoF5.net] >>333 C++で.Netをオーバーライドとかなかなか無い発想だね
348 名前:デフォルトの名無しさん mailto:sage [2018/09/01(土) 12:40:19.46 ID:HRxiLrgz.net] >>333 Roslynをフォークして自作してみてはどうだろう 未だにこうやって.NET(というかGC)のメモリ管理に不満を言う人が居なくならないということは 決定的なメモリ管理にはある程度の需要が確実にあるということ そういう人たちのヒーローになれるかもしれない それでパフォーマンスや生産性が上がると本当に実証されればMicrosoftからもアプローチがあるかも
349 名前:デフォルトの名無しさん [2018/09/01(土) 12:48:05.08 ID:c3Y0wsEI.net] >>330 超簡単に言うとWindowsならAPIのテキスト描画関係の 関数を使ってキーイベントを拾ってとかやっていく Win32APIでググれば参考になるサイトがいくつも出てくる 言うのは簡単だがやるのはもの凄く大変だけどね >>331 勉強にはなるけどね その通り中級者の範疇でもないから、かなり実力を付けとかないといけないな
350 名前:デフォルトの名無しさん mailto:sage [2018/09/01(土) 13:06:24.02 ID:1Fa0uhaD.net] >>331 ありがとうございます! 初心者の範疇ではないとは薄々……! テキストエディタ特化のライブラリがあるんですね、先人は偉大だ…… 最終的には自分で使う用に物書き方面に特化した文章エディタを作りたいので先は長いです avalonエディタに触れてみながら参考になる部分はないか色々探ってみます! >>332 確かにC#で作られたものじゃなくても仕組みの理解に繋がりそうではありますね! 基礎の基礎は終えた今なら少しは中身を探れるかもしれないので 探して覗いてみます、ありがとう! >>336 なるほど、ググりながらよく分からないままに使っていた User32.Dllまわりの正
351 名前:フがそれなんですね……!? ありがとうございます、勉強になります! 探ってみます! 色々できるようになりたい! [] [ここ壊れてます]
352 名前:デフォルトの名無しさん mailto:sage [2018/09/01(土) 13:14:14.49 ID:+st2vgph.net] gcがある言語ならgcにお任せするもんでは?
353 名前:デフォルトの名無しさん mailto:sage [2018/09/01(土) 13:53:17.71 ID:c3Y0wsEI.net] >>337 Gdi32.dllもな
354 名前:デフォルトの名無しさん mailto:sage [2018/09/01(土) 14:09:16.29 ID:P+AKCe3z.net] >>338 一応GCも自前管理もできる言語もあるらしいし 主流にはなってないみたいだから大多数は特に望んでないのだろうけど
355 名前:デフォルトの名無しさん mailto:sage [2018/09/01(土) 14:32:33.00 ID:aEdJ57k5.net] ゲーム用途とかのリアルタイム処理向けGCに入れ替えできたら面白そう
356 名前:デフォルトの名無しさん mailto:sage [2018/09/01(土) 14:39:09.32 ID:mjuKggTp.net] ゲームはそもそもリソース使用量決まってるんだからプレイ中にGC動いたりはしないよ シーン切り替えと一緒に動かす程度だよ
357 名前:デフォルトの名無しさん mailto:sage [2018/09/01(土) 17:48:39.66 ID:CnyU+b4T.net] LinuxのMono Developの使い方のついて、ここで聞いてもいいかな?
358 名前:デフォルトの名無しさん mailto:sage [2018/09/01(土) 17:57:37.75 ID:lAVUzhE8.net] >>343 時代遅れのものは使わずVScode使って該当スレへ行ってください
359 名前:デフォルトの名無しさん mailto:sage [2018/09/03(月) 13:14:32.35 ID:oOf4f4g2.net] >>343 さすがに今時そんな廃棄物は使うなとしか言えない LinuxならRider買うかVSCodeで我慢しなさい
360 名前:デフォルトの名無しさん [2018/09/03(月) 17:03:56.62 ID:dGDVASpD.net] websoketで大量データ受信しながら他の処理を非同期で遅延なく処理するには、別プロジェクトで共有メモリアクセスがいいか、単純に別スレッドでInvokeするのはどちらがいいでしょうか? というより、王道な設計パティーンを教えて下さい。
361 名前:デフォルトの名無しさん mailto:sage [2018/09/03(月) 17:27:25.38 ID:vcilZH89.net] >共有メモリアクセス こういう発想がどこから出てくるのか?
362 名前:デフォルトの名無しさん mailto:sage [2018/09/03(月) 17:29:17.86 ID:QhFCG6IW.net] >>346 王道な形はwebブラウザ
363 名前:デフォルトの名無しさん mailto:sage [2018/09/03(月) 17:41:54.34 ID:ttVcJTrG.net] VSCode でも使っている、Electron とか
364 名前:デフォルトの名無しさん [2018/09/03(月) 18:08:25.48 ID:dGDVASpD.net] >>347 だめですか?
365 名前:デフォルトの名無しさん mailto:sage [2018/09/03(月) 18:13:45.54 ID:9RGmKGyN.net] >>350 だめとかの前に具体的な形考えたうえで書いている?
366 名前:デフォルトの名無しさん mailto:sage [2018/09/03(月) 18:17:15.88 ID:oOf4f4g2.net] 受け取った大量データを他の処理で使いたいってことか? 使うのが受け取りが完了してからでいいんだったら普通にファイルに書けばいい
367 名前:デフォルトの名無しさん mailto:sage [2018/09/03(月) 18:24:29.32 ID:vcilZH89.net] >>350 共有メモリを使うと言うことは別のプロセスと通信すると言うことだね わざわざリソースを食う共有メモリを使って処理速度を遅くして何がしたいんだ?