2013-06-13 2 views
1

Это C# Winforms.Код прекращает выполнение без видимых причин

У меня есть список строк в этом коде:

List<string> WaveAndPickFields = new List<string>(new string[] { "ID", "TransactionID", "OrderNumber", "WarehouseID", "StoreOrderNumber", "OrderType", "CustomerID", "CustomerPONumber", "DepartmentCode", "LoadNumber", "ReverseLoadSequence", "BOLNumber", "MasterBOLNumber", "ProNumber", "Carrier", "CarrierSCAC", "FreightTerms", "RushOrderFlag", "OrderEntryDate", "ExpectedCarrierArrivalDate", "DatePromised", "OrderWeight", "OrderCubicVolume", "OrderCartonCounts", "ShippingShort", "PrepaidFreight", "CODAmount", "InsuranceAmount", "PIPAmount", "TotalFreightCost", "ShipToCustomerCode", "ShipToName", "ShipToAddress1", "ShipToAddress2", "ShipToAddress3", "ShipToCity", "ShipToState", "ShipToZipCode", "ShipToCountryCode", "ShipToCountryName", "BillToCustomerCode", "BillToName", "BillToAddress1", "BillToAddress2", "BillToAddress3", "BillToCity", "BillToState", "BillToZipCode", "BillToCountryCode", "BillToCountryName", "DeliveryAddressName", "DeliveryAddress1", "DeliveryAddress2", "DeliveryAddress3", "DeliveryCity", "DeliveryState", "DeliveryZipCode", "DeliveryCountryCode", "DeliveryCountryName", "DeliveryPhone", "BillFreightCustomerCode", "BillFreightAddressName", "BillFreightAddress1", "BillFreightAddress2", "BillFreightAddress3", "BillFreightCity", "BillFreightState", "BillFreightZipCode", "BillFreightCountryCode", "BillFreightCountryName", "CartonLabel", "ShipVerificationFlag", "PartialOrderFlag", "EarliestShipDate", "LatestShipDate", "EarliestDeliveryDate", "LatestDeliveryDate", "PromoCode", "Route", "Stop", "ToteFlag", "Status" }); 

Все, что я хочу сделать, это цикл через этот код и добавить кучу полей в DataTable. Я делаю это в этом коде:

foreach (string field in WaveAndPickFields) 
{ 
    dtWaveAndPicks.Columns.Add(field); 
} 

Я также попытался:

for (int i = 0; i < WaveAndPickFields.Count; i++) 
{ 
    DataColumn column = new DataColumn(WaveAndPickFields[i]); 
    dtWaveAndPicks.Columns.Add(column); 
} 

По какой причине эти линии появляются, чтобы выполнить, но все функции останавливается и ничего не выполняет без ошибок исключения.

dtWaveAndPicks.Columns.Add(field); 

и:

dtWaveAndPicks.Columns.Add(column); 

Кто-нибудь знает, почему это происходит? Альтернатива, которая работает для меня, - это строка, которая добавит столбец. Проблема в том, что я не хотел иметь 80 строк для добавления полей, если бы у меня был такой цикл.

+0

«По какой причине эти линии появляются, чтобы выполнить, но все функции останавливается и ничего не выполняется без ошибка исключения ". Какие строки? Вопрос немного неоднозначен, не могли бы вы немного заострить внимание? – Ecnalyr

+0

Как создается 'dtWaveAndPicks' и что происходит с ним до цикла? – Igor

+0

, если ваш список представляет собой одну строку, dtWaveAndPicks.Rows.Add (WaveAndPickFields.ToArray()); – terrybozzio

ответ

1

Я бы настоятельно рекомендую использовать WinDbg, чтобы определить, что здесь происходит, - если вы не использовали его, прежде чем он может быть немного сложной, но есть довольно хорошие учебники (в частности, от Tess see here)

После того как вы получил WinDbg установлен получить дамп процесса с помощью диспетчера задач, когда происходит зависание Открыть файл дампа в WinDbg

Затем запустите .symfix c:\sos исправить путь к символам

Следующая нагрузка СОС .loadby sos mscorwks

Наконец, чтобы проверить для исключения любого потока запуска .foreach (ex {!dumpheap -type Exception -short}){.echo "********************************";!pe –nested ${ex} }

Дайте это попробовать & посмотреть, как вы получите на

+0

Благодарим вас за это предложение. Я собираюсь изучить это. На данный момент, однако, я, должно быть, делал что-то неправильно, что я не могу определить, но теперь я в порядке. – hondaman2003

+0

Итак, для чего нужны инструменты Visual Studio? Их недостаточно, не так ли? –

+0

В большинстве случаев разработки да, инструменты VS достаточно, однако бывают случаи, когда требуются более сложные утилиты отладки. Наиболее распространенным (по моему опыту) является то, когда приложение развертывается для производства, начинает сбой или зависание, а журналы недостаточно для определения основной причины. Другие случаи включают многопоточные приложения, где использование точек останова может скрыть проблемы, в конце концов, есть случаи, когда управляемый и неуправляемый код используются совместно – Johnv2020

Смежные вопросы