سؤال

ويمكن للشخص أن يفسر لي لماذا فشل هذا الرمز مرة واحدة في فترة من الوقت مع استثناء فارغة لudpLink في الوقت الذي ترسل؟

            udpLink = new UdpClient(ipAddress, 514);
            using (udpLink)
            {
                  udpLink.Send(rawMsg, rawMsg.Length);
            }

وهذا هو رمز جديد على كيف أنها ثابتة.

            udpLink = new UdpClient(ipAddress, 514);
            using (udpLink)
            {
                  if (udpLink != null) udpLink.Send(rawMsg, rawMsg.Length);
            }

وأي أفكار؟

هل كانت مفيدة؟

المحلول

ولست متأكدا إذا كان هو حقا مشكلة، ولكن اعتقد انها الطريقة كيفية استخدام العبارة باستخدام. وأود أن تفعل مثل هذا:

using (UdpClient udpLink = new UdpClient(ipAddress, 514))
{
    udpLink.Send(rawMsg, rawMsg.Length);
}

نصائح أخرى

واعتمادا على ما إذا كان هذا الجزء من الشفرة في حلقة الذي ينفذ آلاف المرات كنت قد يكون maxing خارج على الاتصالات (الذي كان يتحدث من تجربة). يمكنك القيام -an NETSTAT وإذا كان مخطوطات لأكثر من فرصة ثانية هي التي يمكن أن تكون مشكلتك.

وأنا لا أرى أي سبب لماذا يجب أن يكون الحصول على استثناء مؤشر فارغة على udpLink. كنت متأكدا من أن udpLink هو باطل وليس rawMsg؟ أيضا، كنت على يقين أنك رمي NullPointerException وليس SocketException أو استثناء الآخرين؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top