Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Trang 2 trên tổng số 8 Đầu tiênĐầu tiên 1234... Cuối cùngCuối cùng
Từ 11 tới 20 trên tổng số 75 kết quả

Đề tài: Lỗi: Object reference not set to an instance of an object trong lập trình C# - Nguyên nhân và cách khắc phục

  1. #11
    Ngày gia nhập
    11 2010
    Bài viết
    16

    Unhappy Mặc định Lỗi: Object reference not set to an instance of an object xuất hiện khi gửi Image qua mạng

    Sắn tiện về topic này, giúp mình fix lỗi này trong trường hợp gửi Image theo multithread + Serialize với,
    Client gửi request cho Server thì Server gửi hình cho Client, tuy nhiên gửi xong là chuơng trình báo Exception ở Server,
    các bác giúp đỡ về phần này với (dòng chú thích ở dòng bị lỗi mình tô màu tím)
    Code Server
    Visual C# Code:
    1. namespace Server
    2. {
    3.     public partial class FrmServer : Form
    4.     {
    5.         TcpListener server;
    6.         public FrmServer()
    7.         {
    8.             InitializeComponent();
    9.         }
    10.  
    11.         private void btStarting_Click(object sender, EventArgs e)
    12.         {
    13.             btStarting.Enabled = false;
    14.             Listening();
    15.         }
    16.         void Listening()
    17.         {
    18.             try
    19.             {
    20.                 server = new TcpListener(IPAddress.Parse(txtIP.Text), int.Parse(txtPort.Text));
    21.                 server.Start();
    22.                 while (true)
    23.                 {
    24.                     TcpClient client = server.AcceptTcpClient();
    25.                     new ClientThread(client);
    26.                 }
    27.                 server.Stop();
    28.             }
    29.             catch (Exception)
    30.             {
    31.                 MessageBox.Show("Error!!!");
    32.             }
    33.         }
    34.     }
    35.  
    36.     class ClientThread
    37.     {
    38.         string path = "E:\\pictures\\"; //path thư mục chứa hình
    39.         Thread thread;
    40.         TcpClient client;
    41.         public ClientThread(TcpClient client)
    42.         {
    43.             this.client = client;
    44.             thread = new Thread(new ThreadStart(GuiNhanDL));
    45.             thread.Start();
    46.         }
    47.         void GuiNhanDL()
    48.         {
    49.             StreamReader sr = new StreamReader(client.GetStream());
    50.             BinaryFormatter formatter = new BinaryFormatter();
    51.             while (true)
    52.             {
    53.                 string s = sr.ReadLine();
    54.                 if (s.ToUpper().Equals("QUIT")) break; [COLOR="Magenta"]//debug báo dòng này bị lỗi Object reference not set to an instance of an object[/COLOR]
    55.                 if (s.ToUpper().Equals("ME"))
    56.                     formatter.Serialize(client.GetStream(), Image.FromFile(path + "me.jpg"));
    57.                 else formatter.Serialize(client.GetStream(), Image.FromFile(path + "other.jpg"));
    58.             }
    59.             client.Close();
    60.         }
    61.     }
    62. }

    code Client
    Visual C# Code:
    1. namespace Client
    2. {
    3.     public partial class FrmClient : Form
    4.     {
    5.         TcpClient client;
    6.         public FrmClient()
    7.         {
    8.             InitializeComponent();
    9.         }
    10.  
    11.         private void btConnect_Click(object sender, EventArgs e)
    12.         {
    13.             try
    14.             {
    15.                 client = new TcpClient();
    16.                 client.Connect(IPAddress.Parse(txtIPSv.Text), int.Parse(txtPortSv.Text));
    17.                 if (client.Connected)
    18.                 {
    19.                     Thread threadReading = new Thread(new ThreadStart(StartReading));
    20.                     threadReading.Start();
    21.                 }
    22.             }
    23.             catch (Exception)
    24.             {
    25.                 MessageBox.Show("Error!!!");
    26.             }
    27.         }
    28.         void StartReading()
    29.         {
    30.             try
    31.             {
    32.                 while (true)
    33.                 {
    34.                     using (NetworkStream stream = client.GetStream())
    35.                     {
    36.                         BinaryFormatter formatter = new BinaryFormatter();
    37.                         Image img = (Image)formatter.Deserialize(stream);
    38.                         picDisplay.Image = img;
    39.                     }
    40.                 }
    41.             }
    42.             catch (Exception)
    43.             {
    44.                 MessageBox.Show("Error!!!");
    45.             }
    46.         }
    47.  
    48.         private void btRequest_Click(object sender, EventArgs e)
    49.         {
    50.             StreamWriter sw = new StreamWriter(client.GetStream());
    51.             if (txtRequest.Text != string.Empty)
    52.             {
    53.                 sw.WriteLine(txtRequest.Text);
    54.                 sw.Flush();
    55.                 txtRequest.ResetText();
    56.                 txtRequest.Focus();
    57.             }
    58.             else
    59.             {
    60.                 MessageBox.Show("Ban chua nhap request vào textBox Request!!!");
    61.                 txtRequest.Focus();
    62.             }
    63.         }
    64.     }
    65. }
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    Đã được chỉnh sửa lần cuối bởi meoluoi_91 : 29-12-2011 lúc 12:03 PM.
    Muốn THÀNH CÔNG phải KIÊN TRÌ giữ vững MỤC TIÊU

  2. #12
    Ngày gia nhập
    02 2012
    Bài viết
    2

    Mấy lỗi này khó thật.
    • Thiết kế Văn phòng, Showroom
    • Thiết kế Beauty Spa, thiết kế Shop
    • Thiết kế gian hàng Hội chợ triển lãm
    Mọi chi tiết xin liên hệ tại website:
    http://www.9idea.info
    http://www.giadong.com

  3. #13
    Ngày gia nhập
    08 2010
    Bài viết
    3

    Lỗi này là do chưa khởi tạo đối tượng thôi.


    Trích dẫn Nguyên bản được gửi bởi zstar Xem bài viết
    mình thì thường thì trước khi dùng object thì check null object
    if(obj==null)obj=new obj(params[]);
    sẽ tránh được lỗi trên
    Trích dẫn Nguyên bản được gửi bởi kiendhxd Xem bài viết
    Uhm,
    Bạn có thể giúp mình xem câu lệnh này của mình sai ở chỗ nào nhé:
    objCommand.CommandText = "Select * From [" + Nb_TenBang + "] Where [Story=? and Column=? and Loc=?]";
    Đơn giản hãy so sánh if ("QUIT".Equals(s.ToUpper())) break;

    Một quy tắc trong lập trình mà các bạn nên nhớ là không nên so sánh một dynamic string với static string.

    Thanks
    Quan

  4. #14
    Ngày gia nhập
    08 2009
    Bài viết
    7

    Chào các bạn,

    Tôi đang gặp phải 1 lỗi: object reference not set to an instance of an object trong dự án của tôi.

    Tôi có hàm mở file (ở đây là file Excel)
    Code:
    public void OpenFileFrom(string strPath)
            {
                try
                {                
                    InitPOList(MainTool.GetPOList(MainTool.ReadDataFile(strPath)));
                    EnableButtons_2();
                    //Tool.SaveSetting("LastFile", ofdFileToOpen.FileName);
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message, "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);                
                }
            }
    Như vậy hàm khởi tạo trong FormMain của tôi sẽ là:

    Code:
    public frmMain(string filePath)
            {
                InitializeComponent();           
                OpenFileFrom(filePath);   
                
            }
    Nhằm mục đích nhận lấy đường dẫn từ chương trình truyền vào phương thức OpenFileFrom.

    Trong project của tôi, có 1 class ExcelProcess.cs dùng đề xử lý dữ liệu trên file Excel, tôi khai báo biến
    Code:
    public static frmMain frmmain;
    ; và các phương thức xử lý, kiếm tra dữ liệu trên file Excel sẽ dùng biến này với mục đích là nạp dữ liệu từ file Excel vào chương trình.

    Ngoài việc chọn đường dẫn trực tiếp từ file Excel vào chương trình, tôi xây dựng thêm tính năng đăng ký chương trình vào Window Context Menu, người dùng có thể chọn chương trình của tôi khi chuột phải vào file Excel, và dữ liệu cũng sẽ được nạp vào chương trình, công việc cũng giống như chọn đường dẫn đến file Excel từ chương trình, chỉ khác về thao tác, nhằm tiện dụng hơn.

    Như vậy tôi có các phương thức để đăng ký vào Window Context Menu. Chi tiết xem tại: http://diendan.congdongcviet.com/sho...118#post335118

    Và cuối cùng là nhận lấy đường dẫn ở hàm voidmain() trong Program.cs

    Code:
    static void Main(string[] args)
    {
         frmMain main = new frmMain();
    
                ExcelProcess.frmmain = main;
    
                if (args != null && args.Length > 0)
                {
                        Application.Run(new frmMain(args[0])); //Nhận lấy đường dẫn truyền vào chương trình
                }
                else
                {Application.Run(main);}// Phương thức khởi tạo không đối số
    }
    Và vấn đề xảy ra khi tôi cố gắng lấy đường dẫn truyền vào chương trình, do tôi phải khai báo biến main để gán với biến frmmain trong class ExcelProcess. Và tôi không biết phải làm thế nào để gán được args[0] cho biến main đã được gán để chương trình của tôi nhận lấy được đường dẫn. Khi tôi cố gắng bỏ qua việc gán args[0] cho biến main bằng cách làm như trên: Application.Run(new frmMain(args[0])) thì chương trình vẫn chạy; khi chuột phải vào file Excel chọn chương trình của tôi xuất hiện lỗi: object reference not set to an instance of an object;
    (mặc dầu khối try catch của tôi bắt được lỗi này, nhưng chương trình vẫn nhận được đường dẫn đến file Excel và nạp vào chương trình). Tôi nghĩ rằng lỗi này xảy ra do tôi chưa gán được đường dẫn args[0] cho biến main của chương trình, nhưng tôi vẫn chưa tìm được cách khắc phục.

    Mong các bạn hướng dẫn mình sửa được lỗi này.

    Cảm ơn các bạn!

  5. #15
    Ngày gia nhập
    04 2012
    Bài viết
    2

    Mình củng bị lỗi như trên khi add hàng vào giỏ hàng.
    Mình mới học lập trình web asp.net bằng C#, mình phải làm 1 đề tài có giỏ hàng để nộp nhưng khi đã cố mò tới đc phần add hàng vào giỏ hàng thì lại phát sinh lỗi, mình đã cố gắng sửa nhưng vẫn ko đc. các bạn biết thì giúp mình với
    Lỗi của nó đây:
    Server Error in '/noithatoto' Application.
    Object reference not set to an instance of an object.
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

    Source Error:

    Visual C# Code:
    1. Line 108: int prodID = int.Parse(btn.CommandArgument);
    2. Line 109: int Quantity = int.Parse(txtQuantity.Text);
    3. Line 110: Cart.Add(prodID,Quantity);[B][COLOR="DarkOrange"] / lỗi ở dòng này  /[/COLOR][/B]
    4. Line 111:
    5. Line 112: }
    6.  
    7. Source File: d:\THIETKEWEB\project\noithatoto\uc\productDetail. ascx.cs Line: 110
    8.  
    9. Stack Trace:
    10.  
    11.  
    12. [NullReferenceException: Object reference not set to an instance of an object.]
    13. uc_productDetail.btnAddToCart_Click(Object sender, EventArgs e) in d:\THIETKEWEB\project\noithatoto\uc\productDetail. ascx.cs:110
    14. System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118
    15. System.Web.UI.WebControls.Button.RaisePostBackEven t(String eventArgument) +112
    16. System.Web.UI.WebControls.Button.System.Web.UI.IPo stBackEventHandler.RaisePostBackEvent(String eventArgument) +10
    17. System.Web.UI.Page.RaisePostBackEvent(IPostBackEve ntHandler sourceControl, String eventArgument) +13
    18. System.Web.UI.Page.RaisePostBackEvent(NameValueCol lection postData) +36
    19. System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563
    20.  
    21. [B][U]- Còn đây là code của nó[/U][/B]
    22.  
    23. protected void Page_Load(object sender, EventArgs e)
    24. {
    25. if (!IsPostBack)
    26. {
    27. this.Display();
    28. }
    29. }
    30.  
    31.  
    32. private void Display()
    33. {
    34. String prodID = Request["prodID"];
    35. String sqlProduct = "SELECT prodID,prodName,prodPrice FROM product WHERE prodID=@prodID";
    36. DataTable product = Database.GetData(sqlProduct,"@prodID", prodID);
    37. lblProductID.Text = product.Rows[0]["prodID"].ToString();
    38. lblProductName.Text = product.Rows[0]["prodName"].ToString();
    39. lblUnitPrice.Text = "$ " + product.Rows[0]["prodPrice"].ToString();
    40. btnAddToCart.CommandArgument = prodID;
    41. }
    42.  
    43. protected void btnAddToCart_Click(object sender, EventArgs e)
    44. {
    45.  
    46. ShoppingCart Cart = (ShoppingCart)Session["ShoppingCart"];
    47. Button btn = (Button)sender;
    48. int prodID = int.Parse(btn.CommandArgument);
    49. int Quantity = int.Parse(txtQuantity.Text);
    50. Cart.Add(prodID,Quantity);
    51.  
    52. }
    53.  
    54.  
    55. [B][U]đây là class shoping cart:[/U][/B]
    56.  
    57. public class ShoppingCart : DataTable
    58. {
    59. public ShoppingCart()
    60. {
    61. this.Columns.Add("prodID", typeof(int)).DefaultValue = -1;
    62. this.Columns.Add("prodName", typeof(string)).DefaultValue = "";
    63. this.Columns.Add("prodPrice", typeof(double)).DefaultValue = 0;
    64. this.Columns.Add("Quantity", typeof(int)).DefaultValue = 1;
    65. this.Columns.Add("Discount", typeof(double)).DefaultValue = 0;
    66. this.Columns.Add("Amount", typeof(double), "prodPrice*Quantity*(1-Discount)");
    67.  
    68. this.PrimaryKey = new DataColumn[] { this.Columns["prodID"] };
    69. }
    70.  
    71. public void Add(int prodID, int Quantity)
    72. {
    73. this.AddProduct(prodID, Quantity, false);
    74. }
    75.  
    76. public void Update(int prodID, int Quantity)
    77. {
    78. this.AddProduct(prodID, Quantity, true);
    79. }
    80.  
    81. public void Remove(int prodID)
    82. {
    83. {
    84. DataRow product = this.Rows.Find(prodID);
    85. this.Rows.Remove(product);
    86. }
    87. {
    88. Console.WriteLine("Product not found !");
    89. }
    90. }
    91.  
    92. {
    93. {
    94. object value = this.Compute("SUM(Amount)", "");
    95. return value == DBNull.Value ? 0 : (double)value;
    96. }
    97. }
    98.  
    99. public int Count
    100. {
    101. {
    102. return this.Rows.Count;
    103. }
    104. }
    105.  
    106. private void AddProduct(int prodID, int Quantity, bool Update)
    107. {
    108. {
    109. DataRow Item = this.Rows.Find(prodID);
    110. Item["Quantity"] = Quantity + (Update ? 0 : (int)Item["Quantity"]);
    111. }
    112. {
    113. String sql = "SELECT prodID, prodName, prodPrice, " + Quantity + " as Quantity, 0 AS Discount FROM product WHERE prodID=@prodID";
    114. Database.Fill(this, sql, "@prodID", prodID);
    115. }
    116. }
    117. }
    Đã được chỉnh sửa lần cuối bởi huuhung : 21-04-2012 lúc 07:45 PM. Lý do: Cho code vào thẻ

  6. #16
    Ngày gia nhập
    03 2009
    Nơi ở
    Ở địa ngục
    Bài viết
    667

    Mặc định Lỗi: Object reference not set to an instance of an object trong lập trình C# - Nguyên nhân và cách khắc phục

    Lỗi không tìm thấy control asp.net khi dùng phương thức FindControl(id)
    Khắc phục: kiểm tra lại id, hoặc bạn tìm sai chỗ

    tạo đối tượng mới lài sai...

    Nói chung các lỗi loại này nên đặt Break Point để kiểm tra
    Đã được chỉnh sửa lần cuối bởi trungkien45 : 10-01-2014 lúc 03:11 PM.

  7. #17
    Ngày gia nhập
    09 2010
    Bài viết
    11

    Mình thì cũng bị lỗi như vậy, nhưng là khi mình lấy Attributes của XMLnode lên C#
    Code:
    foreach (XmlNode nodes in nodequestion)
                {
                    ClassCauHoi cauhoi = new ClassCauHoi();
                    foreach (XmlNode node in nodes.ChildNodes)
                    {
                        if (node.Attributes["Right"].Value == "1")
                        {
                            cauhoi.Answerright = node.InnerText;
                        }
                        
                    }
    Lỗi chỗ dòng IF, mình hok biết sửa thế nào hết, tại khi mình lấy Attributes XML vào Treview thì nó không báo lỗi gì hết.
    P/S: Mình lập Topic bên Nhập Môn Lập Trình C# mà lâu quá chưa có ai trả lời tiện thấy Topic này hỏi luôn.

  8. #18
    Ngày gia nhập
    06 2011
    Nơi ở
    Thai Nguyen City
    Bài viết
    37

    giúp mình cái lỗi này với, mình làm cái mô hình 3 lớp bây giờ lưu vào csdl có chút vấn đề
    Code:
    đây là method ở lớp DAL
    // Method insert, update, delete
    public bool execute(string query)
            {
                
                    int result = 0;
                    if (connect())
                    {
                        OleDbCommand cmd = new OleDbCommand(query, _conn);
                        result = int.Parse(cmd.ExecuteScalar().ToString());
                        disconnect();
                        if (result > 0) return true;
                        else
                        {
                            _error = "Ko truy van duoc";
                            return false;
                        }
                    }
                    else return false;
                
            }
    
    //Lay so record da co trong csdl
            public int SoRecord()
            {
                connect();
                OleDbCommand cmd = new OleDbCommand("select count(*) from HOCSINH",_conn);
               int d = int.Parse(cmd.ExecuteScalar().ToString());
                disconnect();
                return d;
            }
    
    còn đây là method lớp BLL
    public bool SaveInf()
            {
                string query = "insert into HOCSINH values(";
                query += "'" + (da.SoRecord() + 1) + "',";
                query += "'" + hsDto.Image + "',";
                query += "'" + hsDto.TenHS + "',";
                query += "'" + hsDto.GioiTinh + "',";
                query += "'" + hsDto.NgaySinh + "')";
                if (!da.execute(query))
                {
                    error ="Loi " + da.Error;
                    return false;
                }
                else return true;
            }
    vấn đề là nó vẫn insert dc vào csdl nhưng báo lỗi Object reference not set to an instance of an object. Mong mọi người chỉ giáo
    Đã được chỉnh sửa lần cuối bởi anh_ha_ict : 03-06-2012 lúc 09:25 PM.

  9. #19
    Ngày gia nhập
    06 2011
    Nơi ở
    Thai Nguyen City
    Bài viết
    37

    không có ai giúp mình 1 cái à hic

  10. #20
    Ngày gia nhập
    06 2011
    Nơi ở
    TP.HCM
    Bài viết
    5

    Hôm nay sửa được một lỗi giống như huuhung đã nêu. Cảm ơn vì bài viết của bạn rất nhiều !!
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

Các đề tài tương tự

  1. Trả lời: 9
    Bài viết cuối: 26-10-2013, 10:27 PM
  2. Error:Object reference not set to an instance of an object.Không khởi chạy được file Global.asax
    Gửi bởi nightelf trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 16-04-2013, 12:10 PM
  3. Cách sửa lỗi Object reference not set to an instance of an object trong Xml
    Gửi bởi thangemhamhochoi trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 27-11-2012, 09:58 AM
  4. lỗi Object reference not set to an instance of an object. khi submit form dùng Html.DropDownList
    Gửi bởi tuanngocpt trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 0
    Bài viết cuối: 03-05-2012, 04:02 AM
  5. Socket Lỗi Object reference not set to an instance of an object. Lấy email sử dụng POP3 trong C#
    Gửi bởi kamikaze129 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 26-04-2011, 10:56 AM

Tags của đề tài này

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn