0

さまざまなテスト ステーションから python スクリプトを実行し、対応する出力パネルに出力を表示する WPF アプリを作成しています. スクリプトを並行して実行するには、タスクを使用していますが、ステーションからスクリプトを並行して実行する場合は、.他のステーションの出力も最初に開始されたステーションに取得しています。次のコードを使用しています。

private void ZmqStatusListener(string endPoint)
{
    using (Context context = new Context())
    {
        StatusPort = string.Empty;
        TestResultPort = string.Empty;
        using (Socket server = context.Socket(SocketType.REP))
        {
            try
            {
                if (isStatusContextActive == false || isPortChanged == true)
                {
                    server.Bind(endPoint);
                    isStatusContextActive = true;
                }
            }
            catch (ZMQ.Exception ex)
            {
                if (ex.Errno != 100)
                {
                    string IPCPort = _globalParameters.GlbParam.GlbParamIpcStartPort;
                    if (IPCPort == string.Empty)
                    {
                        IPCPort = "0";
                    }
                    if (endPoint == EditorConstants.PortAddress.PortPrefix + IPCPort)
                    {
                        StatusPort = endPoint;
                        TestReultError = EditorConstants.CommonMessageTypes.TestReultError + ex.Message + EditorConstants.CommonMessageTypes.StackTraceMessage + ex.StackTrace;
                    }
                    StopExecOfScript(default(object));
                    isCancelledtask = true;
                    ScriptStatusDesc = new ScriptStatusDesc()
                    {
                        Status = "Failed",
                        statusDescription = "Failed"
                    };
                }
            }
            while (true)
            {
                string message = server.Recv(Encoding.UTF8);
                UpdateTestResults(message);
                server.Send(" ACK", Encoding.UTF8);
                // if (message == "Test Passed")
                //break;
            }
        }
    }
}

テスト目的で、Python スクリプトに保持したテスト メッセージに基づいて、このコードの while ループを中断しています。その後、それぞれのステーションで出力を正しく取得できますが、この方法では同期方式でしか実行できません。テストステーションを並行して実行する必要があり、応答をリッスンする必要があるため while ループが壊れてはならないため、これは望ましくありません。

4

1 に答える 1