1

msdn を閲覧していて、このページを見つけました。私は関数を見たことがありませSerialPort.Flush()SerialPort.Finalize()。そのため、これらの関数を使用しようとしましたが、エラーが発生しています。

System.IO.Ports名前空間を追加しましたが、Finalize()関数で次のエラーが発生します。

Cannot access protected member 'object.~Object()' via a qualifier of type 'System.IO.Ports.SerialPort'; the qualifier must be of type 'STP_Design.SerialCom' (or derived from it)

Flush()関数で次のエラーが発生します。

'System.IO.Ports.SerialPort' does not contain a definition for 'Flush' and no extension method 'Flush' accepting a first argument of type 'System.IO.Ports.SerialPort' could be found (are you missing a using directive or an assembly reference?)

私は間違ったアプローチでファイナライズ関数にアクセスしていると思います(そして、おそらくまったくアクセスしてはいけません)が、Flush()関数についてはどうなのか本当に疑問に思っています。

私はこのようなものを使用しました:

    private void test()
    {
        SerialPort s1 = new SerialPort();
        s1.PortName = "COM1";
        s1.Open();
        thread.Sleep(200);
        s1.WriteLine("test");
        s1.Flush();
        s1.Close();
        thread.Sleep(200);
        s1.Finalize();
    }

ここに洞察はありますか?

編集: SerialPort.Dispose(boolean) 関数で同じ問題が発生しましたオプションのブール値もアクセスできません...

4

2 に答える 2

3

http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx : いいえFlush。あなたは.Net Micro Frameworkを見ていますが、明らかにFlush

ファイナライザーは、ガベージ コレクションの最後に GC によって呼び出されます。ユーザー コードから外部からアクセスすることも、明示的に呼び出すこともできません。

于 2012-12-10T09:10:12.427 に答える