1

この質問はTHIS QUESTIONに直接関連していますが、主題が異なるため、現在の問題について新しい質問を開始することにしました。私はWCFサービス、サービス、およびGUIを持っています。GUI は int を WCF に渡します。WCF はそれをList<int> IntList; 次に、サービスでリストにアクセスしたい。問題は、WCF サービスのリストに追加しようとすると、「到達不能なコードが検出されました」という警告が表示され、デバッグ時に追加行が完全にスキップされることです。このリストを「到達可能」にするにはどうすればよいですか?

以下は、WCF コード、WCF への GUI 呼び出し、および WCFList<>からの を使用するサービスです。

WCF:

[ServiceContract(Namespace = "http://CalcRAService")]
public interface ICalculator
{
    [OperationContract]
    int Add(int n1, int n2);
    [OperationContract]
    List<int> GetAllNumbers();
}

// Implement the ICalculator service contract in a service class.
public class CalculatorService : ICalculator
{
    public List<int> m_myValues = new List<int>();

    // Implement the ICalculator methods.
    public int Add(int n1,int n2)
    {
        int result = n1 + n2;
        return result;
        m_myValues.Add(result);
    }
    public List<int> GetAllNumbers()
    {
        return m_myValues;
    }
}

GUI:

private void button1_Click(object sender, EventArgs e)
        {
            using (ChannelFactory<ICalculator> factory = new ChannelFactory<ICalculator>(new NetNamedPipeBinding(), new EndpointAddress("net.pipe://localhost/MyServiceAddress")))
            {
                ICalculator proxy = factory.CreateChannel();                
                int trouble = proxy.Add((int)NUD.Value,(int)NUD.Value);
            }
        }

サービス:

protected override void OnStart(string[] args)
{
    if (mHost != null)
    {
        mHost.Close();
    }
    mHost = new ServiceHost(typeof(CalculatorService), new Uri("net.pipe://localhost"));
    mHost.AddServiceEndpoint(typeof(ICalculator), new NetNamedPipeBinding(), "MyServiceAddress");
    mHost.Open();
    using (ChannelFactory<ICalculator> factory = new ChannelFactory<ICalculator>(new NetNamedPipeBinding(), new EndpointAddress("net.pipe://localhost/MyServiceAddress")))
    {
        ICalculator proxy = factory.CreateChannel();
        BigList.AddRange(proxy.GetAllNumbers());
    }
}
4

1 に答える 1

6

だからあなたは持っています:

int result = n1 + n2;
return result; // <-- Return statement
m_myValues.Add(result); // <-- This code can never be reached!

m_myValues.Add()の状態をまったく変更しないため、これらresultの行を反転してみませんか。

int result = n1 + n2;
m_myValues.Add(result);
return result;
于 2013-08-15T18:28:11.717 に答える