Не уверен, что это то, что вы хотите, но из того, что я могу понять из вашего вопроса, это похоже на то, что вам нужно:
Поскольку вам необходимо, чтобы переменная была доступна в течение всего проекта, вы можете объявить InstanceContext и Client в начале класса.
InstanceContext site;
PostingContractClient client;
следовать в методе form_Load,
site = new InstanceContext(null, new mainForm(backgroundFormObject));
client = new PostingContractClient(site);
и, наконец, в вашей кнопке «Подключиться»,
try
{
site = new InstanceContext(null, new mainForm(backgroundFormObject));
var client = new PostingContractClient(site);
WSDualHttpBinding binding = (WSDualHttpBinding)client.Endpoint.Binding;
string clientcallbackaddress = binding.ClientBaseAddress.AbsoluteUri;
clientcallbackaddress += Guid.NewGuid().ToString();
binding.ClientBaseAddress = new Uri(clientcallbackaddress);
client.Subscribe();
MessageBox.Show("Service has been connected!", "Connected");
}
catch (EndpointNotFoundException)
{
if (client != null)
{
MessageBox.Show("WCF Service has not been started. Please try to manually connect again after the service has been started.", "Error");