1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
private Queue<ProduitDataSet.BidonRow> m_FileBidons;
void EntreeBidon(ProduitDataSet dsProduits, int idBidon)
{
ProduitDataSet.BidonRow bidon = dsProduits.Bidons.FindByBidonId(idBidon);
if (bidon!=null)
{
m_FileBidons.Enqueue(bidon);
bidon.Statut = "EnCours";
// Sauvegarde du DataSet des produits
ThreadPool.QueueUserWorkItem(new WaitCallback(SaveProduitDataSet), dsProduits);
}
}
/// <summary>
/// Sauvegarde du DataSet
/// </summary>
private void SaveProduitDataSet(object objProduitDataSet)
{
ProduitDataSet dsProduit = objProduitDataSet as ProduitDataSet;
lock (m_ProduitDataSet)
{
// Fusion des bidons modifiés
if (dsProduit.Bidons.GetChanges(DataRowState.Modified) != null)
{
m_ProduitDataSet.Bidons.Merge(dsProduit.Bidons.GetChanges(DataRowState.Modified), false);
}
// Sauvegarde du DataSet
try
{
// Test Endormissement du thread courant
Console.WriteLine("Endormissement du Thread. {0}", Thread.CurrentThread.ManagedThreadId);
System.Threading.Thread.Sleep(10000);
Console.WriteLine("Réveil du Thread. {0}", Thread.CurrentThread.ManagedThreadId);
// Sauvegarde du DataSet
// m_GestionProduit est une interface distante accessible via .Net Remoting
m_GestionProduit.SaveProduits(m_ProduitDataSet);
// Valide les changements apportés
m_ProduitDataSet.AcceptChanges();
}
catch (Exception ex)
{
log.Error("Erreur lors de la sauvegarde du DataSet des produits.", ex);
}
}
}
private void SortieBidon()
{
ProduitDataSet.BidonRow bidon = dsProduits.Bidons.FindByBidonId(idBidon);
bidon.Statut = "Termine";
SaveBidon(bidon);
}
/// <summary>
/// Sauvegarde des modifications apportées à la ligne d'un bidon
/// </summary>
private void SaveBidon(ProduitDataSet.BidonRow rowBidon)
{
if (rowBidon!= null)
{
// Transtypage de la table du carton
ProduitDataSet.BidonsDataTable dtBidons = rowBidon.Table as ProduitDataSet.BidonsDataTable;
try
{
// Sauvegarde des modifications du cartons
m_GestionProduit.SaveBidon(dtCartons, rowBidon.BidonId);
rowBidon.AcceptChanges();
}
catch (Exception ex)
{
log.Error("Erreur lors de la sauvegarde du bidon.", ex);
}
}
} |
Partager