C#, C♯, C#相談室 Part93©2ch.net

■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/

■コードを貼る場合はこちら
http://ideone.com/

■前スレ
C#, C♯, C#相談室 Part92
http://echo.2ch.net/test/read.cgi/tech/1485589613/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

88デフォルトの名無しさん (ワッチョイ b66c-XSap)2017/10/10(火) 23:25:11.21ID:I+aeGBiR0
C++/CLIとC#の組み合わせがある。

最終的な呼び出し元はネイティブと同じ口なんだけど、
dynamicやasync/awaitなどを使いたいため、
dllexport付近の薄皮一枚だけ C++/CLI、
残りは全部C#で記述して1つの.dllにってのに.netmoduleを使う。

C#とF#の組み合わせとか、ほとんど無意味に思えるが…

iron python も?

90デフォルトの名無しさん (ワッチョイ 0b7a-7iB9)2017/10/18(水) 13:52:47.94ID:ufsScDVj0
event解除ってnullぶっこんでもいいのかしら?
何処見ても-=でしろってのばかりで全解除の適切なやり方載ってないんだけど
一応null代入で動いてるぽいけどちと不安

まいなすはそれだけ消す、nullはすべて消す
できわるいコードだとnull入れると落ちるw

92デフォルトの名無しさん (ワッチョイ 0b7a-7iB9)2017/10/18(水) 14:18:32.71ID:ufsScDVj0
全解除ってそれなりに需要あると思うんだが何処も扱ってない不思議
+=って内から外へ処理出しする訳だから
インスタンスが破棄されたら当然破棄されるべきなのにどうもそうなってない
nullぶっこめばGC回収されるみたいだけど正しいやり方なのかな

設計次第じゃないの

購読側じゃなく発行側が勝手に解除ってのがちょっと...
むしろどういう場面で必要になるのか想像できないな

> +=って内から外へ処理出しする訳だから
> インスタンスが破棄されたら当然破棄されるべきなのにどうもそうなってない
ここは何を言ってるのかよく分からない

まあ、イベントというかデリゲートのマルキチャストの仕組みが分かりづらいのはわかる

>>92
正しいというかとりあえず安全なのは何もしないの放り込んどく
それでも勝手に消されて困るのがあるかもしれんがw

96デフォルトの名無しさん (ワッチョイ 0b7a-7iB9)2017/10/18(水) 16:11:03.50ID:ufsScDVj0
>>94
例えば非同期通信でデシリアライズ終わったらイベント投げて後は勝手に死ね、って場合
-=だと発行側で解除するのが困難でリークしちまう
最新VerC#ならTaskで後処理書けばいいけど、Unityだとつい最近まで3.5だったから

>>96
俺の理解不足だったらごめん

リークするのはイベントの購読側のオブジェクトLがイベントの購読を解除しないまま
Lを参照する変数がなくなった場合で、発行側のオブジェクトPのイベントに
Lのメソッドが登録されたままPへの参照がなくなってもそれはリークにならないと思うんですが

98デフォルトの名無しさん (ワッチョイ 0b7a-7iB9)2017/10/18(水) 16:39:10.41ID:ufsScDVj0
>>97
そう思ってた時期が俺にもありました
しかし実際はリークしてOutofMemoryが出る
どうも購読側参照が残ってると到達可能と見られてGC回収されないぽい
本当にそういう理屈かは知らんけどnullぶち込むと例外でなくなる

99デフォルトの名無しさん (ワッチョイ 797e-lqEX)2017/10/18(水) 17:26:02.20ID:jNhOnQNR0
思い込みって怖いネー

100デフォルトの名無しさん (ワッチョイ 93b3-meYy)2017/10/18(水) 17:46:05.16ID:GswCLlj60
>>98
>どうも購読側参照が残ってると到達可能と見られてGC回収されないぽい

登録解除してないから購読側は発行側から参照されてて回収されない
その状態で購読側が発行側を参照してるんなら発行側も回収されないよね

101デフォルトの名無しさん (ワッチョイ 7996-lqEX)2017/10/18(水) 19:19:26.31ID:j/PgXgnk0
循環参照しててもルートから到達不能なら回収されるよ
されないなら単に循環参照以外の参照が何かしら残ってるだけ

いいや解放されないね!とかいう思い込みに付き合う気はないから
口ごたえがしたければ、VSのメモリーアナライザーで
リークしているというオブジェクトの参照状態のスナップショットを撮って
ここに貼り付けてから続けるように

102デフォルトの名無しさん (ワッチョイ 93b3-meYy)2017/10/18(水) 21:18:06.23ID:GswCLlj60
>>101
すまんすまん、他の言語と勘違いしてた。

103デフォルトの名無しさん (ワッチョイ 318a-SWEl)2017/11/07(火) 14:20:16.62ID:7CEykIkZ0
WebBrowserコントロールを使うと、レジストリ編集しないと自動的にIE7相当になってしまうんですが、
レジストリ編集無しでIE11相当にするにはどうしたらいいでしょうか?

もしくは、dllファイル1つで済むなら、他のブラウザコンポーネントでもいいです。

104デフォルトの名無しさん (ワキゲー MM8a-9Rqp)2017/11/07(火) 14:42:48.60ID:uJ4GX7RNM
IEは他にはhtmlのmeta要素使うとか
レジストリっていってもHKCUなんだからアプリ起動時に書き込むだけのことだけど

105デフォルトの名無しさん (ワッチョイ 2e81-TtNK)2017/11/07(火) 18:40:38.64ID:MJK6I9RA0
>>103
CefSharpっていうChromiumの実装がNuGetにあるよ
AnyCPUに対応してないんで導入が若干手間だけど気合いでがんばれ

106デフォルトの名無しさん (ワッチョイ 794f-mNd+)2017/11/08(水) 00:31:11.06ID:NuL34q9d0
>>103
CoInternetSetFeatureEnabled

107デフォルトの名無しさん (ワッチョイ dfb3-iA8U)2017/12/18(月) 07:59:20.53ID:mWvJQqvN0
#EntityFrameworkの質問ってここでよいですか?

EFCore+Sqliteで開発してるんですが、".db"ファイルのパス指定で困ってます。

コネクション作成時に、以下でdbパス指定をしています。
var connectionString = new SqliteConnectionStringBuilder { DataSource = @"./app.db" }.ToString();

この場合、理由がよく分かってないのですが、
Update-Databaseを実行した時(CreateDatabaseが発行される時)、プロジェクトフォルダからの相対パスになり、
SaveChangesを実行した時(Insert文が発行される時)、/bin/debugからの相対パスになります。

毎回相対パス指定を変えるのが面倒で、かつ絶対パス指定はしたくないもので。
何か良い方法はありませんでしょうか。

108デフォルトの名無しさん (ブーイモ MM63-9jqv)2017/12/18(月) 13:46:10.03ID:325qmzymM
ここじゃないと思うの

109デフォルトの名無しさん (ワッチョイ 1e9e-rCI4)2017/12/18(月) 14:56:45.39ID:dTBoNCZ50
>>107
で、app.dbはどこに有るのよ、

俺ならexeパス取得して絶対パス作ってそれ使うけど、
絶対パスいやならカレントフォルダ変更したら?

111107 (ワッチョイ dfb3-iA8U)2017/12/18(月) 23:30:30.75ID:mWvJQqvN0
>>109
プロジェクトフォルダにできます。
ただ、プログラム実行時は別のパス見てるからDBないエラーになります。

>>110
あー、それいいかもです。
やってみます。

112デフォルトの名無しさん (ワッチョイ cbb3-RYVm)2017/12/31(日) 15:13:16.63ID:n7dS7ECy0
個々の人ってWinFormとWPFどっちで作ってる?

113デフォルトの名無しさん (ワッチョイ 06ed-FiVz)2017/12/31(日) 15:13:40.84ID:K0nOGJob0
WPF

何度聞かれてもformだ

115デフォルトの名無しさん (ブーイモ MM76-cnjM)2017/12/31(日) 16:16:35.61ID:PdI3PgJiM
オレも2年前からWPFにした。

116デフォルトの名無しさん (ワッチョイ 67f2-RYVm)2017/12/31(日) 16:35:43.42ID:GvxCaHuK0
新規は基本的にWPFだけど、使い捨てのツールはFormsのことも多い。

117デフォルトの名無しさん (アウウィフ FF2f-gocz)2017/12/31(日) 16:54:40.12ID:Jm0z8SXaF
昔はVSが何かっつと即堕ちして使いもんにならんかったが
今はまともになったんかねWPF

118デフォルトの名無しさん (ワッチョイ cbb3-RYVm)2017/12/31(日) 17:32:53.36ID:n7dS7ECy0
WPFって技術資料があんまないから、つっかかりにくいんだよなあ

119デフォルトの名無しさん (ワッチョイ decc-vQtD)2017/12/31(日) 18:07:24.15ID:jSVu2Yi+0
>>118
日本語が変だな
外国人?

120デフォルトの名無しさん (アークセー Sx03-tbBN)2017/12/31(日) 18:22:11.56ID:OKQGXBiEx
>>119
あれだ外人からみれば
そうみえんじゃねw

121デフォルトの名無しさん (ワッチョイ decc-vQtD)2017/12/31(日) 20:17:21.07ID:jSVu2Yi+0
つっかかりにくい→つかえやすいorつっかえやすい
それとも
つっかかりにくい→とりつきにくいorとっつきにくい

あんまない→あまりないorあんまりない

読解力ないな
外国人?

123デフォルトの名無しさん (ワッチョイ 4ae1-uLLi)2017/12/31(日) 20:26:45.27ID:sT88mvz00
読解力が無かったら修正例は書けないと思う

124デフォルトの名無しさん (ワッチョイ 5f81-Ixt9)2017/12/31(日) 21:26:10.60ID:mh0j3eXv0
どこかの田舎もんが書いた文章なんだろ

125デフォルトの名無しさん (ワッチョイ cbb3-RYVm)2018/01/01(月) 08:43:08.79ID:qva7Cn1y0
そんな事にも突っ込まないといけないほど余裕がないんだろうな

126デフォルトの名無しさん (ワッチョイ 7b17-Ogju)2018/01/08(月) 21:07:22.93ID:ff9XOb220
ILMergeについて質問です

例えば自作アプリ X.EXE に外部ライブラリ A.DLL と B.DLL を結合して X2.EXE を作ったとします
この X2.EXE を配布する場合、A.DLL と B.DLL の著作権情報を明記すれば問題ないという認識で合っていますか?

127デフォルトの名無しさん (ワッチョイ 0f9a-+W2v)2018/01/08(月) 21:23:20.13ID:/QyX6ETP0
>>126
それはILMerge関係なくA.DLL と B.DLL のライセンスの問題です
結合が禁止されていなければ添付して配布するのと同じになります
どんなライセンスかによって違うので
【License】ライセンス総合【利用許諾】
https://mevius.5ch.net/test/read.cgi/tech/1266247461/
へどうぞ

128デフォルトの名無しさん (ワッチョイ 9fb3-TPPA)2018/01/08(月) 21:33:00.91ID:7hYpzMEE0
>>126
> この X2.EXE を配布する場合、A.DLL と B.DLL の著作権情報を明記すれば問題ないという認識で合っていますか?
各々のライセンスを確認するしかない

129デフォルトの名無しさん (ワッチョイ 7b17-Ogju)2018/01/08(月) 22:13:04.36ID:ff9XOb220
>>127-128
レスありがとうございます

130デフォルトの名無しさん (ワッチョイ bad2-4vN5)2018/01/31(水) 23:46:33.39ID:3zSQiFnB0
ラムダ式から右辺の情報を取得する事は出来ますか?

.net MVC のソースコードを見ていて思ったのだけど、たとえば razor の Html.LabelFor メソッドは第一引数に
m => m.name などと書いて、引数 m で示すクラスインスタンスの name プロパティの DisplayName 属性の値を
ラベルとして表示していたりします。

ということは、ラムダ式 m => model.name から name プロパティの属性情報を取得しているのだと思うのですが、
どうやってるのかさっぱり分からず。
調べるべきキーワードだけでもいいので、ヒントをいただけませんか。

131デフォルトの名無しさん (ワッチョイ d780-miZj)2018/02/01(木) 01:19:13.10ID:7ACR6glp0
ラムダ式を受け取るメソッドの引数を
Func<String>の代わりにExpression<Func<String>>にしたりする
キーワードは式ツリー

132130 (ワッチョイ 9fd2-K3c3)2018/02/02(金) 00:27:05.13ID:eoTWLp2s0
>>131
ありがとー。
軽く見てみましたが、Expression ってよく分からないですね。。
式ツリーでも、もっと調べてみます。

133デフォルトの名無しさん (ワッチョイ 6eed-nHV3)2018/02/13(火) 16:59:47.00ID:KbLCHvlc0
サイズ、位置が固定されているウィンドウを外部プログラムから移動、サイズ変更する方法を教えてください

134デフォルトの名無しさん (ワキゲー MM8a-/z5x)2018/02/13(火) 20:22:55.89ID:ElvL/+ZbM
とりあえず一般的には
FindWindowやEnumWindowsで目的のウィンドウのウィンドウハンドルを手に入れて
SetWindowPosする
>>133のウィンドウがこれでできるかどうかはそのプログラムの作り次第

135デフォルトの名無しさん (ワッチョイ 6eed-nHV3)2018/02/13(火) 20:56:39.50ID:KbLCHvlc0
>>134
ありがとうございます
それで移動、サイズ変更できないウィンドウをどうにかできないかなと思い質問してみました
ユーザーが移動サイズ変更できないウィンドウでも強引にしてしまうプログラムがあるらしいので、どうしてるのかな?と

136デフォルトの名無しさん (ワッチョイ 2e9a-jA6l)2018/02/13(火) 21:00:42.72ID:00bUqpHu0
>>135
とりあえず直接のC#の話でなくWinAPIなんだからそっちで調べた方がいいと思うよ

137デフォルトの名無しさん (ワッチョイ 6eed-nHV3)2018/02/13(火) 21:21:31.71ID:KbLCHvlc0
>>136
ありがとうございます

138デフォルトの名無しさん (ワッチョイ f7e0-T3WU)2018/02/16(金) 06:01:32.86ID:W1XJdyx10
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆

新着レスの表示
レスを投稿する