У меня есть winform
приложения, которое потребляет окно обслуживания, я пользователь ChannelFactory
подключиться к службе, проблема, когда я называю метод обслуживания с использованием канал увеличения использования памяти и после метода выполнения памяти не идет вниз (даже после закрытия формы), я называю GC.Collect
, но никаких измененийChannelFactory вызова метода increse память
канал Создать класс
public class Channel1
{
List<ChannelFactory> chanelList = new List<ChannelFactory>();
ISales salesObj;
public ISales Sales
{
get
{
if (salesObj == null)
{
ChannelFactory<ISales> saleschannel = new ChannelFactory<ISales>("SalesEndPoint");
chanelList.Add(saleschannel);
salesObj = saleschannel.CreateChannel();
}
return salesObj;
}
}
public void CloseAllChannels()
{
foreach (ChannelFactory chFac in chanelList)
{
chFac.Abort();
((IDisposable)chFac).Dispose();
}
salesObj = null;
}
}
базовый класс
public class Base:Form
{
public Channel1 channelService = new Channel1();
public Channel1 CHANNEL
{
get
{
return channelService;
}
}
}
WinForm класс
Form1: База
private void btnView_Click(object sender, EventArgs e)
{
DataTable _dt = new DataTable();
try
{
gvAccounts.AutoGenerateColumns = false;
_dt = CHANNEL.Sales.GetDatatable();
gvAccounts.DataSource = _dt;
}
catch (Exception ex)
{
MessageBox.Show("Error Occurred while processing...\n" + ex.Message, "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
finally
{
CHANNEL.CloseAllChannels();
_dt.Dispose();
//GC.Collect();
}
}
Просто потому, что вы распоряжаетесь чем-то, это не означает, что он автоматически будет собран в GC следующей коллекции. Почему вы чувствуете, что вам нужно вручную вызвать GC, а не просто позволить программе управлять собой? Я настоятельно рекомендую вам прочитать [эту статью] (http://msdn.microsoft.com/en-us/magazine/bb985010.aspx), чтобы помочь вам понять, как работает сборщик мусора. –
На самом деле у вас все еще есть живые ссылки на ваши каналы! Вы никогда не выпускаете ссылку, которая хранится как элемент в «Channel1».chanelList' –
@ScottChamberlain Как я могу освободить ссылки на канал – test