1

シリアル ポート経由でデータを受信して​​いるバックグラウンド ワーカーの作業中に、文字列の 4 次元配列を返す必要があります。

バックグラウンド ワーカーで:

    array<String^>^ Received = gcnew array<String^>(4);
    backgroundWorker1->ReportProgress(10,Received);

レポート進行中:

private: System::Void backgroundWorker1_ProgressChanged(System::Object^ sender,   System::ComponentModel::ProgressChangedEventArgs^  e)
{
    array<String^>^ Received2 = gcnew array<String^>(4);
    Received2 =(e->UserState);
}

私は得ています:

エラー C2440: '=': 'System::Object ^' から 'cli::array に変換できません"

これは驚くべきことではありませんが、変換してに割り当てる方法UserStatestring array?

4

1 に答える 1

0

オブジェクト ハンドルを配列ハンドルにキャストし、nullptr をチェックして、キャストが成功したかどうかを確認する必要があります。

array<String^>^ Received2 = dynamic_cast<array<String^>^>(e->UserState);
if (Received2 != nullptr)
{
    // Cast was successful, safe to use Received2.
}
else
{
    // Cast failed, do not use Received2.
}
于 2013-06-25T19:47:40.497 に答える