Будет ли когда-нибудь сборщик мусора OBS
объект obs
?
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Windows.Forms;
namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
CreateSOB();
Form form = new Form();
form.Show();
GC.Collect();
Application.Run();
}
static void CreateSOB()
{
SOB sop = new SOB();
}
public class SOB
{
private Socket socket;
public SOB()
{
socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.IP);
socket.Bind(new IPEndPoint(IPAddress.Any, 12345));
byte[] buffer = new byte[4096];
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallback), buffer);
}
public void ReceiveCallback(IAsyncResult ar)
{
MessageBox.Show("recv:" + socket.EndReceive(ar).ToString());
byte[] buffer = new byte[4096];
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallback), buffer);
}
}
}
}
В приведенном выше примере CreateSOB()
создает локальную переменную sob
типа SOB
, которая, в свою очередь, создает сокет и сохраняет ссылку на него.
Поскольку ни один поток не хранит прямую ссылку на объект sob
, будет ли он когда-либо собираться GC?