ふらっとC#,C♯,C#( ..
[2ch|▼Menu]
481:デフォルトの名無しさん
09/03/07 20:30:31
もういいでしょ。SQLサーバの設定正しくできるようになってから、またおいで。

482:469
09/03/07 20:33:56
わかった
すまなかったごめんな
皆さん急がしいところ2週間もありがとうございました


483:デフォルトの名無しさん
09/03/07 20:52:54
>>481
本当に役立たずだなお前

484:デフォルトの名無しさん
09/03/07 21:06:56
在日がイライラしてんだろ察してやれ

485:デフォルトの名無しさん
09/03/07 21:09:32
うわ・・・

486:デフォルトの名無しさん
09/03/08 00:18:13
スレ違いは別にいいんだけどさ、勝手な略語を書き込みまくるのはやめれ

URLリンク(msdn.microsoft.com)(SQL.90).aspx

487:デフォルトの名無しさん
09/03/08 01:42:23
C#でWindows Formアプリーケーションを作成し、WebBrowserコンポーネントを
乗せています。
そこにSVGファイルを表示させたいのですが、実行するとコンポーネント内には

--------------------------------------------------------------------
取り消されたアクション

Internet Explorer は、要求された Web ページにリンクできませんでした。
要求された Web ページは現在、利用できない可能性があります。
--------------------------------------------------------------------

と表示され、別途IEが起動します。
別途起動したIEには「セキュリティ保護のため、コンピュータにアクセス
できる・・・」といういつものメッセージが表示され、
「ブロックされているコンテンツを許可」を選択すると正常に表示されます。

そのファイルをHTMLでラップするとIEの起動は止められますが、
コンポーネント内には空白と赤×のアイコンが出るだけです。

恐らくブラウザコンポーネントのセキュリティ設定の問題だと思うのですが
Windows Formアプリケーションから呼び出したときだけセキュリティの
レベルを下げることは可能なのでしょうか?
それとも別の開放があるのでしょうか?

ちなみに読み込ませるファイルはローカルにあり、自分で書いた安全な物です。

488:デフォルトの名無しさん
09/03/08 01:58:59
>>487
URLリンク(codezine.jp)

489:464
09/03/08 02:16:10
URLリンク(msdn.microsoft.com)
> ディスパッチャ操作にこのデリゲートを使用する必要はありませんが、
> DispatcherOperationCallback と SendOrPostCallback は動的な呼び出しを使用します。

この文章がまじで意味不明だったんだが、大体分かった。
DispatcherOperationCallback と SendOrPostCallback *以外は* DynamicInvoke() される。

で、>>461の DispatcherExtensions クラスの拡張メソッド BeginInvoke() を使うと、
Action を DispatcherOperationCallback でラップしてくれる。

490:デフォルトの名無しさん
09/03/08 02:30:09
>>488
COMですか・・・。
と言うことはWebBrowserコンポーネントじゃなく、COMのaxWebBrowserを
使うということでしょうか?
後、これは.Net 3.5、Visual Studio 2008でも通用するテクニックなのでしょうか?
明日試してみます。ありがとうございました。

491:488
09/03/08 03:15:24
>>490
ごめん、自分で実装したことはないから詳細は不明
とりあえず、
webbrowser IInternetSecurityManager
のキーワードで検索するといろいろ引っかかるから使えるかどうか調べてみてください

492:デフォルトの名無しさん
09/03/08 03:23:31
>>491
はい。とりあえずやってみます。

正直COMはあんまり良く理解してないのでWebBrowserコンポーネントで
何とかできるとありがたいのですが・・・。

493:デフォルトの名無しさん
09/03/08 12:47:41
>>489
型推論が効くって説明は誤っていると思っていたので気になって
いたんだけど、了解した。
Dispatcher.BeginInvoke((Action)delegate{},優先度);
って書くと呼び出しが高速になるって事だね。それで引数が必要ならば
拡張メソッドじゃない標準のBeginInvokeを使って
DispatcherOperationCallbackかSendOrPostCallback
を使えば良いと。

ところで、
using System.Windows.Threading;
しても、この拡張メソッドがInteliSenseに出てこなくて拡張メソッドが
有効になっていない気配だったので気になって調べて見たら
System.Windows.Presentation
への参照を追加するのが必要なのね。これでめでたくInteliSense
に出てきました。

494:デフォルトの名無しさん
09/03/08 13:45:57
C#2.0、ジェネリクスメソッドで、型のインスタンスを生成して返すことってできますか?
できるのなら、どうすればいいでしょうか。こんなことをやりたいです。

public T Hoge<T>()
{
 return new T();
}

495:デフォルトの名無しさん
09/03/08 13:53:14
public T Hoge<T>() : where T : new() { return new T(); }
ちなみにこのnew T()はActivator.CreateInstance<T>()のシンタックスシュガー

496:デフォルトの名無しさん
09/03/08 14:48:35
おお、できたありがとう!

497:デフォルトの名無しさん
09/03/08 19:56:56
GenericなFactory ですね

498:デフォルトの名無しさん
09/03/08 22:31:15
ジェネリックコレクションに格納されているデータで
引数で渡した値が存在するかをチェックしたいのですが
パフォーマンスが良いやり方を教えていただけないでしょうか?

↓こんなんじゃあパフォーマンス悪すぎですよね・・・
private bool Search(string keyword)
{
foreach(string value in this._data)
{
if(value == keyword)
{
return true;
}
}
return false;
}


499:デフォルトの名無しさん
09/03/08 22:35:47
一般にはそれしかない
_dataがList<T>や配列ならFindとか使えばいい

500:デフォルトの名無しさん
09/03/08 22:39:21
std::setみたいのって無いの?

501:デフォルトの名無しさん
09/03/08 22:39:44
.NET3.5で要素が重複しないならHashSet<T>使えば速いかも

502:デフォルトの名無しさん
09/03/08 22:47:37
_dataについてIEnumerable<T>型であること以上のことがわからないのであれば,
asでICollection<T>にキャストしてnullなら>>498方式,nullでなければICollection<T>.Contains
を使うのが一般に速いはず
LINQが使えるなら何も考えずEnumerable.Containsを使えばいい
(こういう小細工は中でやってくれるから)

503:デフォルトの名無しさん
09/03/08 23:59:18
main()があるクラスの名前ってどうしてる?
IDEの吐くスケルトンのデフォのProgramのままが普通なんだろうか。

あと、グローバルなシングルトンを取得する静的メソッドを寄せ集めたクラスって
定番の名前とかあるのかな。

504:デフォルトの名無しさん
09/03/09 00:01:24
どっちも絶対にinternalにするので名前なんてどうでもいい

505:デフォルトの名無しさん
09/03/09 00:05:15
>>503
クラス名・変数名に迷ったら書き込むスレ。Part14
スレリンク(tech板)l50


506:デフォルトの名無しさん
09/03/09 00:06:35
>>505
なにこの俺にぴったりのスレ。

507:デフォルトの名無しさん
09/03/09 00:21:07
>>504
コードを書く人にとってはそうでも、コードを読む人(3ヶ月後の自分を含む)
にとってはそういう考え方は困る。

少なくとも普通はクラスファイルが数十以上になる、
ある程度実用的なコードを書いてる場合は。

前にも書いたけど、やっぱり2chってトリビアルな知識はなぜか妙に詳しいが
大きなプログラムは書いたことないし書けない人間が多いのかな。

508:デフォルトの名無しさん
09/03/09 00:22:48
最後の2行がなければ全面的に同意したのに

509:デフォルトの名無しさん
09/03/09 00:25:42
大きいの作るときにグローバルインスタンス寄せ集めクラスはそもそもどうかと

510:デフォルトの名無しさん
09/03/09 00:57:31
>>507
個人的には C# だと名前変えるのそんなに大変じゃない場合が
多いから >>504 とは別の理由で結構無頓着だなぁ

名前ってウダウダ考えるより書いてないときにひょんと来たり
整理してから思いついたりするから後回しにしてそういう時間を
とるほうを優先するかな。

511:デフォルトの名無しさん
09/03/09 09:40:54
どうでもいいというのは、その状況で適切な名前をつければいいと言うことであるわけで
何か固定の名前を付けるなんて小規模で1人でやってる場合ならいいが

512:デフォルトの名無しさん
09/03/09 16:55:32
C#からFlashをocxで呼び出して表示させると、
Microsoft OEM Readyプログラムのテスト5で
バッファーアンダーランのようなエラーで止まってしまうんですが、
何か良い方法はないのでしょうか。

FlashはAS2とAS3で、それぞれステージだけある空のswfファイルです。

---
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Windows\system32\Macromed\Flash\Flash10b.ocx -
Flash10b+0x3ef4a:
673fef4a 8a08 mov cl,byte ptr [eax] ds:0023:11012000=??


513:デフォルトの名無しさん
09/03/09 17:42:59
rubyでMechanize使って実装していた処理をC#に移植中なんですが
「Webページのテキストボックスに文字列を入力してsubmitボタンを押す」
というような処理をするときWebBrowserクラスを使うしかないんでしょうか

できればDocumentCompleteで待つように別スレッドが発生しないクラスがあればうれしいのですが・・・

514:デフォルトの名無しさん
09/03/09 17:49:00
多分IronRubyとか使ってRubyのを使えるだけそのまま使った方がいい

515:デフォルトの名無しさん
09/03/09 17:50:47
なんでC#なんだろ

516:デフォルトの名無しさん
09/03/09 18:38:40
Linqについて勉強しようと思っているのですが、何かお薦めの本があれば教えてください

517:デフォルトの名無しさん
09/03/09 19:13:43
もしかしたら、.NET Frameworkのバグ(?)を見つけたかもしれないんですが、
本物か勘違いか、皆さんのご意見を伺いたいです。まずはサンプルコードを。

-----------------------
Type type = typeof(List<string>); // 型は何でもいいです
type.GetInterfaces(); // .NET Framework 1.1以降のメソッド
type.GetGenericArguments(); // 2.0以降のメソッド

Type delegator = new TypeDelegator(type);
delegator.GetInterfaces(); // 無問題
delegator.GetGenericArguments(); // NotSupportedExceptionをthrow

type.Equals((object)delegator); // false <= ???
type.Equals((Type)delegator); // true
delegator.Equals((object)type); // true
delegator.Equals((Type)type); // true
-----------------------

解説は次のレスで。

518:デフォルトの名無しさん
09/03/09 19:16:00
勘違い
以上

519:デフォルトの名無しさん
09/03/09 19:25:00
URLリンク(msdn.microsoft.com)
> TypeDelegator クラス
> Type オブジェクトをラップし、すべてのメソッドをこの型にデリゲートします。

という継承用のヘルパークラスなんですが、以下の二点について。

(1) Typeクラスのメソッドのうち、.NET 2.0以降でサポートされたメソッドをサポートしていない?

きちんと確かめたわけではないのですが、TypeDelegatorでは.NET 1.1の時点で
Typeがサポートしていたメソッド以外について委譲(デリゲート)を実装していないように見えます。

通常は、Type.GetGenericArguments()を呼ぶと、実行時にはSystem.RuntimeTypeの実装を呼ぶので
問題ないのですが、TypeDelegatorから呼ぶと、継承元のメソッドであるType.GetGenericArguments()
が呼ばれます

また、SSCLIにあるコードによれば、Typeでの実装は
URLリンク(labs.developerfusion.co.uk)
> public virtual Type[] GetGenericArguments()
> {
>   throw new NotSupportedException(Environment.GetResourceString("NotSupported_SubclassOverride"));
> }
となっているらしいので、TypeDelegator.GetGenericArguments()を呼ぶと
NotSupportedException(「派生クラスには実装を指定しなければなりません。」)が投げられてしまうようです。

520:デフォルトの名無しさん
09/03/09 19:38:51
ジェネリクスでも、メソッドの引数としてType typeof(T)を渡すとSystem.RuntimeTypeが渡されるけど
同じ場所でtypeof(T).ToString()を渡すとTのクラス名が渡される

なぜだ?
坊やだからさ

521:デフォルトの名無しさん
09/03/09 19:39:16
(2) Type.Equals((object)TypeDelegator)の判定が正常でない?

Type.Equals(object)の方を呼んでTypeDelegatorのインスタンスを渡した場合のみ、
同じTypeを指していてもfalseが戻るようです。
こちらは原因がさっぱり分かりませんが、正常な判定ではないような気がします。

---------------------
というのが私の意見なのですが、勘違いぽかったらツッコミをお願いします。

522:デフォルトの名無しさん
09/03/09 19:48:26
>>520
すいません、もう少し詳しくお願いします。

523:デフォルトの名無しさん
09/03/09 20:04:35
とあるジェネリクスメソッドGeneticMethod<Nullpo>内で
public void Method(Type type)としてMethod(typeof(T))とすると、
MethodにはSystem.RuntimeTypeが渡される
同じジェネリクスメソッド内から
public voix Method(string typeName)としてMethod(typeof(T).ToString())とすると、
Methodには、Nullpoが渡される

524:デフォルトの名無しさん
09/03/09 20:11:34
>>523
申し訳ない、その場合どこが問題なのか分からないです。。

525:デフォルトの名無しさん
09/03/09 20:18:10
引数として渡しているのは、同じNullpoなのに、片方はなぜかSystem.RuntimeTypeが返るんだぜ
なぜだ

526:デフォルトの名無しさん
09/03/09 20:59:00
.NET版のwikipediaってないですか?
C#とMSDEとかで作られてるやつ。
社内のシステムに取り入れたいんです。

527:デフォルトの名無しさん
09/03/09 21:04:23
>>526
Wikipedia はないだろ。Wiki はあるけど。

528:デフォルトの名無しさん
09/03/09 21:10:32
>>527
wikiを教えてください。

529:デフォルトの名無しさん
09/03/09 21:17:58
ぐぐったら 三番目にでてきた

URLリンク(csharp-source.net)

DotNetNuke(DNN) にも、Wiki の機能はあったはず。

530:デフォルトの名無しさん
09/03/09 21:24:08
>>525
typeof(T)がSystem.RuntimeTypeなのは、もちろん当然ですよね。
typeof(T).ToString()がstringなのも、やはり当然ですよね。

具体的に、どの辺が問題だというお話なんでしょう?

531:513
09/03/09 21:27:58
>514 >515
.NETの機能を使えと上に言われて組んでる感じです
何でなのかは・・・よくわかりません・・・w

このレスの感じだとWebBrowser使うしかな下げな感じですかね
レスポンスありがとうございました

532:デフォルトの名無しさん
09/03/09 21:29:13
>>530
typeof(T).ToString()はstringだけどNullpoだって

typeof(T)をTypeとして渡してType(T).ToString()がSystem.RuntimeTypeなら、
typeof(T).ToString()がSystem.RuntimeTypeでないのはなんでだぜ?

533:デフォルトの名無しさん
09/03/09 21:39:39
>>531
ううん。

HttpWebRequest でリクエストして、結果を受け取って、
さらに Post する。

atmarkIT とかにサンプルあるよ。

534:デフォルトの名無しさん
09/03/09 21:41:48
話がかみ合ってないんだから、へんなたとえ話するのやめろよ

535:デフォルトの名無しさん
09/03/09 21:43:19
>>531
WebBrowserはGUIありきなので表示しないのなら使うべきでない
標準ライブラリにはスクレイピング用ライブラリは存在してない
自前で実装するかCodeProjectあたりから拾うかしないと駄目だな

あ、IEを非表示で使う? でもIE7から面倒になったような気がする

536:デフォルトの名無しさん
09/03/09 21:49:42
URLリンク(www.atmarkit.co.jp)

基本はこの辺かな?

537:デフォルトの名無しさん
09/03/09 21:50:16
>>532
private static void GenericMethod<T>()
{
Method(typeof(T));
Method(typeof(T).ToString());
}
private static void Method(Type type)
{
Console.WriteLine(type);
}
private static void Method(string type)
{
Console.WriteLine(type);
}

GenericMethod<Nullpo>() の出力結果:
Nullpo
Nullpo

538:デフォルトの名無しさん
09/03/09 22:17:06
>>537
パソコンから「ガッ」って音がしました!

539:デフォルトの名無しさん
09/03/09 22:21:04
>>537
いやいや
private void Method<T>()

540:デフォルトの名無しさん
09/03/09 22:21:26
>>537
まだ私が何かわかってないのかもしれませんが、
Type型インスタンスをstring型の引数に渡したら、暗黙にToString()が呼ばれる以上、
両方とも"Nullpo"というstring型インスタンスとしてWriteLine()に渡るのは、
特に不思議ではないのでは。

私が>>517-521で疑問視しているのは、Type型のスーパークラスであるobject型を引数に取る、
Equals(Type)のオーバーロードであるEquals(object)の結果が、Type型のそれと異なっている
のは不自然だし、そもそもEquals()の常識的に考えられる結果と齟齬しているのではないか、
ということなのですが。

541:デフォルトの名無しさん
09/03/09 22:32:15
>Type型インスタンスをstring型の引数に渡したら、暗黙にToString()が呼ばれる以上
呼ばれません。WriteLineの引数の型はobject型で中でToStringを呼んでます。


542:デフォルトの名無しさん
09/03/09 22:40:03
コネクションプーリングってやつはado.netが勝手にやってくれるもんなんすか?
プログラムでは、DBに接続してSQL発行して切断するというロジックを組んでも
内部的には切断されずに次の処理のためにセッションを保持しててくれるの??

543:デフォルトの名無しさん
09/03/09 22:41:51
RuntimeTypeがType.Equals(Object)の実装をオーバーライドして
単純な参照比較に変更してるのが原因みたい
どう考えても明確な意図があってやってると思われるのでたぶん仕様なんだろう

544:デフォルトの名無しさん
09/03/09 22:46:23
>>542
はい。設定は、接続文字列でやります。

545:デフォルトの名無しさん
09/03/09 23:01:38
>type.Equals((object)delegator); // false <= ???…(1)
>type.Equals((Type)delegator); // true…(2)
>delegator.Equals((object)type); // true…(3)
(1)と(2)はともかく,(1)と(3)で結果が違うのはObject.Equalsの要求仕様に反してるね
だけど今更こんな基礎的なとこを変えるのはありえないので仕様と考えるしかないな

546:デフォルトの名無しさん
09/03/09 23:17:48
動的にイベントを追加するときに
もう既に追加されているかどうか確認してから
追加されてないときだけ、イベントを追加したいのだけど
どうすればいいのですか?

547:デフォルトの名無しさん
09/03/09 23:18:08
2ちゃんねる風の掲示板で.net版ってありますか?

548:デフォルトの名無しさん
09/03/09 23:18:48
>>541
なるほど。
どちらにせよ、該当メソッドの実装意図から考えても不自然な挙動ではないように思います。

>>543
>>545
確かに、これは仕様と考えて対処した方が良さそうですね。

いちおう、TypeDelegatorの件(>>517)も気になるので合わせて報告しておきたいのですが、
こういうのってどこに報告すればよいんでしょうか。

549:デフォルトの名無しさん
09/03/09 23:37:06
>>546
直接には無理。追加したらフラグ立てとくしかない。
イベントというのはそういうもの。
>>548
いやTypeDelegatorは継承して必要なメソッドをオーバーライドするものなので
好きにオーバーライドして使えということだろ
NotSupportedExceptionを投げるのが既定の実装なんだから何もおかしくない

550:デフォルトの名無しさん
09/03/09 23:45:09
TypeDelegatorってTypeの派生クラス作るときにabstractメンバ全部実装するの面倒だから
既定の丸投げ実装を提供してるだけなんだと思う
GetGenericParametersはabstractじゃないんだから当然そのまま
GetGenericParametersに限らずTypeの他のvirtualメンバもTypeDelegatorでは実装されてない

551:550
09/03/09 23:46:01
GetGenericArgumentsだった

552:デフォルトの名無しさん
09/03/09 23:46:13
>>517
これって、type.Equals()はRuntimeType.Equals()を呼んでいて、delegator.Equals()はType.Equals()を呼んでるから
結果が違うんじゃないの?
RuntimeType.Equals()は
obj == this
だし、Type.Equals()はUnderlyingSystemTypeを比較してるみたいだけど。
TypeDelegatorのUnderlyingSystemTypeはコンストラクタで代入したTypeのインスタンスのUnderlyingSystemTypeを
返してるみたい。

>>545
>Object.Equalsの要求仕様
今まで特に気にして無くて初めて知ったので読んでみたい。詳細キボン

553:デフォルトの名無しさん
09/03/09 23:50:24
>>549
確かにそれも一理あると思います。
ただ、ドキュメントの一行目に

  Type オブジェクトをラップし、『すべての』メソッドをこの型にデリゲートします。

と書いてあるわけで、実際には委譲されないメソッドが存在するのは、
ドキュメントを読んだライブラリ利用者が期待する挙動に即しているとはいえないのでは。

554:デフォルトの名無しさん
09/03/09 23:52:09
>>552
MSDNのObject.Equalsのページに載ってる
>>553
そういうのは九割九分ドキュメントの方が悪いw
よくあること

555:デフォルトの名無しさん
09/03/09 23:55:44
>>546
別に重複して登録されたりはしないよ。

556:デフォルトの名無しさん
09/03/10 00:00:24
重複して登録されるよ。

557:555
09/03/10 00:02:27
試してみたら重複して登録される...orz。


558:555
09/03/10 00:05:30
ちょうどObject.Equalsの話が出ているのでついでに書いておくと
デリゲートってインスタンスが違くても参照先のメソッドが等しければ
等価って判定されるんだよね。いわゆる値比較ってやつ。

だから、イベントの登録、削除もそれを反映していると勘違いしていた...orz.

559:デフォルトの名無しさん
09/03/10 00:05:40
>>552
どうもそういうことみたいですね。

>>554
これのせいで2〜3日潰した方としてはかなり文句が言いたい感じですがw
むぅ〜

560:デフォルトの名無しさん
09/03/10 00:12:39
>>554
thx
今回引っかかってるのは

・x.Equals(y) は y.Equals(x) と同じ値を戻します。

ってやつか。

561:デフォルトの名無しさん
09/03/10 03:16:14
>>546
remove して add すればいい

562:デフォルトの名無しさん
09/03/10 07:13:11
+=は?

563:デフォルトの名無しさん
09/03/10 07:53:07
>>546
どこで追加したかわかってないような設計をまずやめろ


564:513
09/03/10 09:04:58
>533 >535-536
遅くなったけど ありがトン
勉強してみます

565:デフォルトの名無しさん
09/03/10 10:06:00
デリゲートが理解できずに苦しんでるんだけど、
昔のvbでいうと、evaluate関数みたいな使い方ができるってこと?

566:デフォルトの名無しさん
09/03/10 10:16:56
うんにゃ

567:デフォルトの名無しさん
09/03/10 10:17:25
URLリンク(up2.viploader.net)
自宅にあるVS2008expressから別パソコンにソリューションファイルを移して
これまたVs2008expressで起動したんだけど
こういう表示がでて、上手くプログラムが動かないんだが・・・。
具体的にはgmailのサーバーにつなげるセッションが完了しない。
解決法ご存じの方いますか。


568:567
09/03/10 10:18:26
あ、言い忘れてました。
ソースファイルのパスは自宅パソコンのパスになってるので
このパスを実行パソコンのソリューションファイルのパスに変更できれば
直るのかなーと思っているんだけど・・・。

569:デフォルトの名無しさん
09/03/10 10:20:31
Mail.csを追加するときに「リンクとして追加」やってない?
普通にプロジェクトに追加しないと

570:567
09/03/10 10:21:30
あああ・・・すみません。
もう一つ言い忘れが。
自宅のPCはVistaで.slnを移動して実行しようとしている環境はXPです。

571:デフォルトの名無しさん
09/03/10 10:22:22
リビルドしたか?

572:デフォルトの名無しさん
09/03/10 10:23:27
>>567
ソリューションのプロパティ→構成プロパティ→構成
でビルドすべきプロジェクトにチェック入ってる?

573:567
09/03/10 10:27:18
>>569
早速の解答ありがとうございます。
slnファイルから起動しているので
既にプロジェクトに組み込まれている感じなんですが・・・。
ソリューションエクスプローラー上にもファイルの表示がされているし
Mail.csのプロパティの完全パスっていう項目も
現在のPCのパスになっているから、問題はなさそうなんですが。
一応既存の項目の追加でもう一度Mail.csを読み込んでみましたが
改善はないようです・・・。

574:567
09/03/10 10:33:30
>>571
デバッグ実行時にMainFormは開けているので、
リビルドというか、ビルド自体は出来てると思うんですが
エラーウィンドウをみる限り、Mail.csを上手く読み込めてない感じかなあ?

>>572
ソリューションのプロパティには
・スタートアッププロジェクト
・プロジェクト依存関係
・デバッグソースファイル
の3項目しか表示されてないんですが
これは自分のIDEがExpressだからでしょうか・・・。

575:567
09/03/10 10:43:44
うーん・・・
これは現在のPCのネット環境の問題かも知れないですね。
自宅ではGmailに接続できるのに、現在のPCでは接続できないぽ・・・。
メール関連のライブラリはTKMPって奴を使ってるんですけど

こういう現象って起こりうる物でしょうか。


576:デフォルトの名無しさん
09/03/10 10:55:02
>>574
かも。572はPro版を見て言った。
Proでソリューションのプロパティはこうなってる。

→共通プロパティ
 →スタートアッププロジェクト
 →プロジェクト依存関係
 →デバッグソースファイル
→構成プロパティ
 →構成

てか「ビルド」メニュー→「構成マネージャ」でもひらける。

577:デフォルトの名無しさん
09/03/10 10:55:37
>>574
移動したらビルドじゃ駄目だよ。
念のためクリーンしてからリビルドしてみ

578:デフォルトの名無しさん
09/03/10 10:56:37
.cs,.sln,.csproj以外のファイル全部消してリビルドしてみて

579:567
09/03/10 11:05:41
多数の返答ありがとうございます。

>>576
あー
ビルド→構成マネージャ の表示がそもそもないですね。
でもこの機能2003pro使ってた時に使ってたんで、おっしゃりたい事はわかりました。
デバッグの際にReleaseかDebugか選ぶ項目ですよね。
Expressにはないみたいですね〜。

>>577
クリーンという作業は>>578さんが言っているような事でしょうか・・・
すみません汗

>>578
formのresxっていうのも消したらデバッグエラーが起こるようになってしまい
プログラムが起動しなくなりました。
これも消してよかったんでしょうか。

580:デフォルトの名無しさん
09/03/10 11:20:52
resxも消しちゃダメ
objフォルダとbinフォルダを丸ごと消すだけでいい

Expressにもビルド構成はあるけど既定では表示されてないだけ
ツールーオプションーすべての設定を表示
プロジェクトおよびソリューションービルド構成の詳細を表示,常にソリューションを表示 にチェック
テンプレに入れるべき

581:567
09/03/10 11:26:12
うは!
繋がりました!

とりあえず、obj bin releaseフォルダを全削除してリビルドを行いました。
それでも接続のセッションが上手く行かなかったんですが

imap から pop にサーバーを変更したら繋がるようになりました^^;
自宅のPCからはimap.google.comに繋がるんですけどね・・・。
不思議な事だ。

みなさんお手間かけさせてすみませんでした
今回の問題の解決にあたり、皆さんの助言のおかげで
副産物がたくさん手に入りました。

とりあえず >>580さんのすべての設定を表示はかましときます!

ありがとうございました〜♪


582:デフォルトの名無しさん
09/03/10 13:51:35
.NET のライブラリのソースコードを、
MSが公開する前から公開してたサイトがあったんだけど、どこだかわかる人います?
以前はググればでてきたんだが、今は「マイクロソフトが公開!」的なブログサイトばかりで見失ったorz

583:デフォルトの名無しさん
09/03/10 14:13:08
自作コンポーネントを作ってGUI上でコンポーネントを
ダブルクリックしたらイベントが自動的に登録されるようなのを
書きたいんですが、分かり易いサンプルないでしょうか。

584:デフォルトの名無しさん
09/03/10 14:19:44
>>582
SSCLIでググればそれっぽいのが出てくるけど
実際の.NETのソースコードと同じである保証はないし公開範囲も狭いよ
やっぱりデバッグ用に公開されてるのを見る方がいい
NetMassDownloader使えばローカルに一括保存できる
>>583
[System.ComponentModel.DefaultEvent("対象のイベント名")]
class MyControl : Control {

585:デフォルトの名無しさん
09/03/10 14:44:43
>>584
よーしダウンロードしてみるぜ!

586:デフォルトの名無しさん
09/03/10 15:12:15
ダウンロードながいな しかもx64もあるからさらに倍か・・

587:デフォルトの名無しさん
09/03/10 15:52:30
ちんこ大きいからサンプルも置いといてやろう
URLリンク(msdn.microsoft.com)(VS.80).aspx

588:デフォルトの名無しさん
09/03/10 16:09:28
太っ腹ですねデブ

589:585
09/03/10 19:04:01
早速、ダウンロードしてみたんだけど、.net2.0でSystem.Webが取得できないみたいなんだけど、
他の人もそうかな?.net3.5なら取得できるんかな。
ダウンロードできないので激しくショックだぜ

590:デフォルトの名無しさん
09/03/10 19:09:18
クラスの破棄について質問なのですが、
~Class()
{}
空のデストラクタを指定するだけでメモリを解放してくれるのでしょうか。
というより、必要がないのですか。

591:デフォルトの名無しさん
09/03/10 19:13:31
IDisposeのあるものは、Disposeをしたほうがいい。
というより、インスタンス生成時にusing句を使ったほうがいい。
IDisposeのないものは、ガベージコレクタが回収してくれるから、そのままでいい。


592:デフォルトの名無しさん
09/03/10 19:19:28
デストラクタでDisposeするのは絶対やってはいけないこと
そもそもPInvokeでアンマネージリソース抱えてたりしない限りはデストラクタは不要
というかパフォーマンスが落ちるので不要なデストラクタは書いてはいけない

593:デフォルトの名無しさん
09/03/10 19:34:18
>>591-592
ありがとうございます。
必要ないわけですか。ということは、
C++でやってた後始末みたいな事がまるで不要という事ですね。

594:デフォルトの名無しさん
09/03/10 19:35:29
IDisposableを実装してようがしてなかろうがGCには回収される
Disposeし忘れてもファイナライザで解放処理が呼ばれるように実装するのが普通だからたいがい大丈夫
ファイナライザが呼び出されてるということは今GCが走ってるわけだから,
絶対に他のマネージオブジェクトにアクセスしてはいけないし
余計な気をまわして他のオブジェクトのDisposeを呼ぶ必要もない

595:デフォルトの名無しさん
09/03/10 19:44:01
>>594
メモリの解放に限ってはそうだが、IDisposableは掴んでるリソースを解放するとか
最後にやらなければならないメソッドの総称という意味もあるので、
Disposeがあれば絶対に実行はすべき

596:594
09/03/10 19:55:03
すまんわかりにくかったね
Disposeしなくていい(してはいけない)というのはファイナライザ(デストラクタ)の中での話
クラスAがIDisposableなオブジェクトBをメンバに持ってるならA自身もIDisposableを実装して
A.Disposeの中でBをDisposeするようにしないといけない
その場合もファイナライザは不要

597:デフォルトの名無しさん
09/03/10 20:14:30
>>584
ローカルに保存したソースって、デバッグモード以外で直接見るにはどうすればいいんでしょうか。

598:デフォルトの名無しさん
09/03/10 20:15:03
WPFのExpanderのようなURLリンク(www.sociomedia.co.jp)
は C# .NET 2.0でも実装できますか?

599:デフォルトの名無しさん
09/03/10 20:32:35
>>597
.cs ファイルがあるから、直接見ればいいんでね?

600:デフォルトの名無しさん
09/03/10 20:39:16
>>599
あら、そんなのあったっけ。。。
確かめてみます。

601:デフォルトの名無しさん
09/03/10 21:34:01
>>595
>Disposeがあれば絶対に実行はすべき

これは明らかに間違いだと思うが。

そう設計されているクラス(よくない設計だが)でもない限りは、
基本的にはGCに任せる方がいいとされる。
もちろん必要ならDisposeやCloseを呼んでもよい。

602:デフォルトの名無しさん
09/03/10 21:37:02
>>601
>このインターフェイスは主に、アンマネージ リソースを解放するために使用します。
>マネージオブジェクトが使用されなくなると、同オブジェクトに割り当てられているメモリは
>ガベージ コレクタによって自動的に解放されます。
>ただし、ガベージコレクションが行われるタイミングは特定できません。
>また、ガベージ コレクタでは、ウィンドウハンドル、開いたファイルやストリームなどの
>アンマネージ リソースが認識されません。

>ガベージ コレクタを使用して、明示的にアンマネージ リソースを解放するには
>このインターフェイスの Dispose メソッドを使用します。
>オブジェクトがもはや必要でない場合、オブジェクトのコンシューマはこのメソッドを呼び出します。

603:デフォルトの名無しさん
09/03/10 21:46:09
コピペ君って馬鹿だな、まで読んだ。

604:デフォルトの名無しさん
09/03/10 21:47:21
いやいやお前のほうがバカだろ

605:デフォルトの名無しさん
09/03/10 21:48:34
>>603
>このインターフェイスは、Disposeメソッドだけを定義している。
>使い終わったら確実に資源を解放する処理が必要なクラスは、
>このインターフェイスを実装して、解放処理を記述するのが.NET Frameworkでのお約束である。

606:デフォルトの名無しさん
09/03/10 21:52:11
内容が微妙だから揚げ足取りになりがちな話題だが、
>>601の言ってることの方が真実に近いよ。
馬鹿なコピペ君の負け。

馬鹿なコピペ君の言うとおりなら、例えばWindows Formのデザイナで
デザイン時にコンポーネントを貼り付けるような使い方をMSはわざわざ用意しないだろう。

607:デフォルトの名無しさん
09/03/10 21:54:33
>>602
そのどこにも「Disposeがあれば絶対に実行はすべき」
なんて書いてないよね。俺の言ってること分かってるかい?

明示的にDisposeやCloseを呼び出さなければ、
やがてGCがファイナライザを呼び出してアンマネージリソースの
後片付けをさせるってこと分かってるかい?

608:デフォルトの名無しさん
09/03/10 21:55:55
>>598
作ればできるでしょ

609:デフォルトの名無しさん
09/03/10 21:56:09
揚げ足取りもなにも、CLR via C# とか読めば普通に書いてあることだよね。

610:デフォルトの名無しさん
09/03/10 21:58:45
ともかく,必ず呼ばれることを期待した実装にしてはいけない

611:デフォルトの名無しさん
09/03/10 21:59:00
>>606
>>607
アンマネージ リソース=ウィンドウハンドル、開いたファイルやストリームなど
IDisposableは主にアンマネージ リソースを解放するために使用

612:デフォルトの名無しさん
09/03/10 22:01:41
>>606
>馬鹿なコピペ君の言うとおりなら、例えばWindows Formのデザイナで
>デザイン時にコンポーネントを貼り付けるような使い方をMSはわざわざ用意しないだろう。

???
デザイン時にコンポーネントを貼り付けると自動的にDisposeが呼ばれるようになるけど
そういう話?

例えばボタンを貼り付けると、InitializeComponent()に
this.Controls.Add(this.button1);
みたいなのが追加される。

で、FormのDisposeでcomponents.Dispose();が呼ばれてる。

613:デフォルトの名無しさん
09/03/10 22:02:35
>>606
良く読もうな

>クラスで外部リソースを使用するが、そのクラスをデザイン領域では使用しない場合は、
>System.IDisposable を実装するか、あるいは直接または間接的に IDisposable を実装するクラスから派生させます。

>クラスがデザイン可能ではなく、外部リソースを保持していない場合は、IComponent 型や IDisposable 型は不要です。

614:デフォルトの名無しさん
09/03/10 22:05:39
>>611
別にIDisposableを実装していなくても、アンマネージリソースはファイナライザ中で解放すればいい。
IDisposableはGCに頼らずとも明示的にリソースを解放するための手段を与えるためのものだよ。
勘違いしているのでは?

615:デフォルトの名無しさん
09/03/10 22:05:58
>>612
話が通じない人だなあ。

言いたかったのは、もしIDisposable.Disposeが、不要になれば「必ず」呼ぶ必要があるほどの
緊急性があることを表すメソッドであるのなら、それを実装したクラスのインスタンスを
不要不急の時まで生かしておくことを許すようなことはしないだろう、
ということだよ。

まだ話が通じないとアレなので一応補足するけど、例えば
PrinterSettingDialogとかFileSaveDialogとか、いつもいるわけじゃないでしょ。

616:デフォルトの名無しさん
09/03/10 22:08:09
フォーム関連は生存期間が長いから少々無駄に長居してもそんなに問題にならない

617:615
09/03/10 22:09:30
あーなんかわけのわからんクラス名かいちゃったけど
PrintDialogとSaveFileDialogだなw

618:デフォルトの名無しさん
09/03/10 22:10:07
作る側と使う側じゃ、話もかみ合わないな・・・。

作る側は、必ず Dispose() を呼んでくれる、ってのを期待しちゃダメ。
使う側は、Dispose() を忘れちゃダメ。

619:デフォルトの名無しさん
09/03/10 22:13:53
>>615
>言いたかったのは、もしIDisposable.Disposeが、不要になれば「必ず」呼ぶ必要があるほどの
>緊急性があることを表すメソッドであるのなら、それを実装したクラスのインスタンスを
>不要不急の時まで生かしておくことを許すようなことはしないだろう、
>ということだよ。

ああ、「必ず」とつけた人がいてその人に噛みついていたのか。
それで「必要ではない」例をあげてたと。

しかしまあそれを言うなら>>601

>もちろん必要ならDisposeやCloseを呼んでもよい。

こっちだって明らかに日本語が残念な人だろう。
「必要」な場面で「呼んでもよい」ってwww
必要な場合は必ず呼べよwww

620:デフォルトの名無しさん
09/03/10 22:14:17
>>615
換言すれば、そのソフトでfileを一度しかopenしないと考えられるのであれば
使い終わってもcloseする必要はないということですね

死ねば?

621:デフォルトの名無しさん
09/03/10 22:18:55
>>618
使う側も、作る側からDisposeの確実な呼び出しが期待されているのでもない限り、
「必ず」呼び出さなきゃいけないわけじゃないよ。

以下は CLR via C# の解説ね。
一応 .NET Frameworkの開発チームにも参加していた人の意見。


 一般論として、筆者はDisposeメソッドやCloseメソッドの呼び出しを強制するのはあまり
推奨しません。CLRのガベージコレクタはとてもよくできているので、それに任せたほうが
いいからです。ガベージコレクタには、アプリケーションコードがオブジェクトにアクセスし
なくなるタイミングが分かっています。そしてそのタイミングが過ぎたときにだけ、オブジェクト
を回収します。アプリケーションコードでDisposeメソッドやCloseメソッドを呼び出すということは、
アプリケーションは自分がオブジェクトにアクセスする必要がなくなるタイミングが分かっている
と宣言をしていることになります。たいていのアプリケーションでは、オブジェクトが間違いなく
不要になったことがわかることはありません。
 例えば、新しいオブジェクトを作成して、その参照を他のメソッドの引数に渡した場合、
そのメソッドが渡された参照を自分のオブジェクトの内部フィールド(これはルートになります)
に格納するかもしれません。メソッドを呼び出した側では、このような動作をしているかどうかは
分かりません。この場合、呼び出し側がDisposeやCloseを呼び出してしまって、その後で
他のコードがそのオブジェクトを利用しようとすると、ObjectDisposedExceptionがスローされる
ことになります。
 筆者は、DisposeやCloseを自分のコードで呼び出すのは、次の2つの場合に限ることを
推奨します。1つは、リソースを解放しなければならないことが分かっている時(開いている
ファイルを削除しようとするときなど)です。もう1つは、DisposeまたはCloseを呼び出すことが
間違いなく安全で、しかもオブジェクトをファイナライゼーションリストから削除して、
オブジェクトが昇格するのを防ぐことで、パフォーマンスを向上させたい場合です。

622:デフォルトの名無しさん
09/03/10 22:20:36
>>619
IDisposableの目的が、主にアンマネージリソースの解放だから、
あれば実行するのは普通だと思うぞ?
この場合、ポトペタのコントロール等を持ち出して実行しなくてもいい例とするほうが狂ってる

623:デフォルトの名無しさん
09/03/10 22:23:10
>>621
大抵は最後の「2つの場合」に当てはまると思うんだけど

624:デフォルトの名無しさん
09/03/10 22:23:37
それはその人の意見に過ぎないでしょ。

> たいていのアプリケーションでは、オブジェクトが間違いなく
> 不要になったことがわかることはありません。

GC のない言語は全否定? ありえないです。

アンマネージドなリソースを使うから、それらのリソースを解放する
必要があるから、Dispose() を実装する。そう考えれば、Dispose() が
用意されてるなら、不要になった時点で呼ぶべきだと思うよ。

625:デフォルトの名無しさん
09/03/10 22:24:11
>>621
だから
>1つは、リソースを解放しなければならないことが分かっている時(開いているファイルを削除しようとするときなど)です
がDisposeの目的だって書いてあるっていってんの

626:デフォルトの名無しさん
09/03/10 22:24:18
>>618,>>619
だからさ、揚げ足取りのように聞こえるかもしれんがその「ダメ」とか「必要な場合は必ず」
っていう言い方は正しくないんだよ。

もっと控えめに、

(1) 占有している共有資源を他に譲りたいなら呼べ
(2) Disposeを呼ぶことをあえて避ける理由はなにもない

と表現するのが正しい。>>601の言っていることの方が妥当だ。

>>620
君はたぶん学生時代数学が出来なかった子だろうね。
君は必要条件と十分条件の区別がついてない。


Disposeを実装していることは、「使い終わったら必ず開放すべき資源を持っている」
ことの必要条件であっても十分条件じゃない。

つまり、Disposeを実装していることは、そのインスタンスが必ず
「使い終わったら必ず開放すべき資源を持っている」ことを意味しない。

627:デフォルトの名無しさん
09/03/10 22:24:19
>>621
それどこから引用したの?それとも自分で訳したの?

628:デフォルトの名無しさん
09/03/10 22:27:11
>>623
>>624
君たちのも「意見」に過ぎないよね。
しかも、素人の意見と、MSの多くのソフト開発に関わった人の意見とでは、
どちらを信用すべきか目に見ていると思うが。
(一応出版社もMicrosoftの書籍に書かれていることなので、
 MSの準公式見解といっていい)

まともな人の書いた書籍で、絶対にDisposeを呼び出せって言ってるのはあるの?
それを提示しないと説得力ないよね。

629:デフォルトの名無しさん
09/03/10 22:27:41
>>626
君は今も理屈っぽいとよく他人からバカにされるでしょ。

Disposeの目的の主な利用方法がアンマネージリソースの解放なんだから、
できる時にしておくべき。

630:デフォルトの名無しさん
09/03/10 22:29:21
>>627
日本語版も「プログラミング .NET Framework」という題で出ている。

631:デフォルトの名無しさん
09/03/10 22:30:53
>>630
原著は持ってるが日本語版を持ってないから聞いたのだが。

632:デフォルトの名無しさん
09/03/10 22:30:54
こんがらがってきました

633:デフォルトの名無しさん
09/03/10 22:31:11
つーか、呼び出しても呼び出さなくてもいいなら、
安全面に倒して(リソース不足やらを引き起こさないように)
呼び出した方がいいじゃん。

そんなこともわかんないのかな・・・

634:デフォルトの名無しさん
09/03/10 22:31:28
>>628
良く嫁

>たいていのアプリケーションでは、オブジェクトが間違いなく不要になったことがわかることはありません。
だから
>一般論として、筆者はDisposeメソッドやCloseメソッドの呼び出しを強制するのはあまり推奨しません。
ってことだろ?

間違いなく不要になることはわからないから、一般的に推奨しないわけであって、
明らかに分かってる場合には、実行しても問題じゃないってこった。

従って、アンマネージリソースを抱えている可能性があるわけだから、
必要ないと分かっていれば実行はするべきだということになる。

635:デフォルトの名無しさん
09/03/10 22:32:09
なんか、原理主義者というか、細かいことにこだわる奴がいるなぁ・・・。

636:デフォルトの名無しさん
09/03/10 22:32:38
リソースをカプセル化したオブジェクトを使ったコードを記述する場合は、オブジェクトが不要になった時点で、
そのオブジェクトの Dispose メソッドが必ず呼び出されるようにする必要があります。

ついで
URLリンク(social.msdn.microsoft.com)


637:デフォルトの名無しさん
09/03/10 22:33:15
盲目的という感じはするね

> 明らかに分かってる場合には、実行しても問題じゃないってこった。
どう考えてもその通り

638:デフォルトの名無しさん
09/03/10 22:34:12
>>633
そこは誰も否定してないよ。
だから微妙な話だといってるんだけど。。

639:デフォルトの名無しさん
09/03/10 22:35:54
>>621の筆者が心配してるようなリソース行方不明状態は作るべきじゃないし
そういう状況は特別に注意して管理するべきであって一般にどうとかいう話じゃないと思うんだ

640:デフォルトの名無しさん
09/03/10 22:38:04
>>639
自分の書いたクラスだけを利用するとは限らないからなあ。
他人の書いたクラスを使う場合は防ぎようがないこともあるだろう。

641:デフォルトの名無しさん
09/03/10 22:40:36
つーか、言ってもない「必ず」とかの文言を勝手にでっち上げて
議論をふっかける奴って何なんだろう・・・?

642:デフォルトの名無しさん
09/03/10 22:42:15
「C++みたいに、メモリ解放とかしなくてもいいんですよ。
だから必ずDisposeさせようと思う必要はないんですよ?」
と過去の呪縛から解放させるためのトークが
「Disposeはすべきでない」
と理解されたらたまったもんじゃないな


643:デフォルトの名無しさん
09/03/10 22:42:49
まぁ、でも、コードレビューとかで「なんで Dispose() しないの?」って質問に

> つまり、Disposeを実装していることは、そのインスタンスが必ず
> 「使い終わったら必ず開放すべき資源を持っている」ことを意味しない。

とか答える奴とは一緒に仕事をしたくないな。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5387日前に更新/246 KB
担当:undef