WCF Реализация служб
От: lutikman  
Дата: 15.07.10 10:05
Оценка:
Добрый день. Если форма, на которой две кнопки (старт и стоп, которые запускают и останавливают службу)
Вот ее код:

namespace WCFServices
{
    public partial class ServicesMainForm : Form
    {
        private int varA = 10;
        private int varB = 20;
        private ServiceHost selfHost;
        private Uri baseAddress = new Uri("http://localhost:8000/WCFServices/");

        public ServicesMainForm()
        {
            InitializeComponent();
        }

        private void bStartCalc_Click(object sender, EventArgs e)
        {
            selfHost = new ServiceHost(typeof(CalculatorService), baseAddress);
            try
            {
                selfHost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(), "CalculatorService");
                ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
                smb.HttpGetEnabled = true;
                selfHost.Description.Behaviors.Add(smb);
                selfHost.Open();
                bStopCalc.Enabled = true;
                bStartCalc.Enabled = false;
            }
            catch (CommunicationException ce)
            {
                selfHost.Abort();
                bStopCalc.Enabled = false;
                bStartCalc.Enabled = true;
            }
        }

        private void bStopCalc_Click(object sender, EventArgs e)
        {
            selfHost.Close();
            bStopCalc.Enabled = false;
            bStartCalc.Enabled = true;
        }
    }
}


И есть класс, реализующий саму службу:
namespace WCFServices
{
    [ServiceContract(Namespace = "http://WCFServices")]
    public interface ICalculator
    {
        [OperationContract]
        double Add();
        [OperationContract]
        double Subtract();
        [OperationContract]
        double Multiply();
        [OperationContract]
        double Divide();
    }

    public class CalculatorService : ICalculator
    {
        private double n1 = 0;
        private double n2 = 0;

        public double Add()
        {
            return n1 + n2;
        }

        public double Subtract()
        {
            return n1 - n2;
        }

        public double Multiply()
        {
            return n1 * n2;
        }

        public double Divide()
        {
            return n1 / n2;
        }
    }
}


Вопрос: Как в функции, раелизующие контракты операций (Add(), Subtract(), Multiply(), Divide()) передать переменные (varA, varB) из главного класса ServicesMainForm?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.