lock关键字这么用对吧

.Net技术 码拜 8年前 (2017-04-11) 1249次浏览
接收到有人连接就保存起来,那个lock用的对吧? 等有人断开的时候就从容器里删除。删除的代码还没写呢

namespace diancai
{
    public class GlobleVariable
    {
        public static Socket s;
        public static IPEndPoint ipe;
        public static List<Socket> arrSocket;
    }
}
namespace diancai
{
    public partial class MainWindow : Form
    {
        public MainWindow()
        {
            InitializeComponent();
            Text = GlobleVariable.sWindowTitle;
        }
        private void MainWindow_Load(object sender, EventArgs e)
        {
            GlobleVariable.arrSocket = new List<Socket>();//初始化容器
        }
    }
}
        private void btn_point_Click(object sender, EventArgs e)//单击按钮
        {
            Thread ListenSocket = new Thread(new ThreadStart(fnListenSocket));
            ListenSocket.Start();
        }
        protected void fnListenSocket() 
        {
            GlobleVariable.ipe = new IPEndPoint(IPAddress.Parse(textBox1.Text), Convert.ToInt32(textBox2.Text));
            GlobleVariable.s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个socket对像,假如用udp协议,则要用SocketType.Dgram类型的套接字  
            GlobleVariable.s.Bind(GlobleVariable.ipe);//绑定EndPoint对像(8889端口和ip地址)  
            GlobleVariable.s.Listen(0);//开始监听  
            while(true)
            {
                Socket temp = GlobleVariable.s.Accept();
                lock (GlobleVariable.arrSocket)
                {
                    GlobleVariable.arrSocket.Add(temp);
                }
            }
        }
解决方案

5

可以。

5

假如是短时锁定的话,建议用spinlock 。你的写法没什么问题。

10

是的,没有问题,但但代码量大了就不适合lock了

5

没什么问题的

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明lock关键字这么用对吧
喜欢 (0)
[1034331897@qq.com]
分享 (0)