0

これはおそらく初心者の質問なので、すぐに出てきてそれを言います。IDisposableクラスを作成するのはこれが初めてです。クラスを正しく作成し、正しく呼び出し、正しく破棄することを確認したいと思います。ありがとう!

システムを使用する;
System.Collections.Genericを使用します。
System.Linqを使用します。
System.Textを使用します。

名前空間クローラー
{{
    クラスLoggingClass
    {{
        パブリッククラスLoggingDisposeable:IDisposable
        {{
            public void GenericLogging(string systemMsg、string SystemClass、string SystemSection、string ID、string FixID、string baseURL、string mysqlQueryName、string mysqlQuery)
            {{
                string Loggingall="tblLogsに挿入"+
                                "set SystemMsg ='" + systemMsg.Replace( "'"、 "''")+ "'" +
                                "、SystemClass ='" + SystemClass.Replace( "'"、 "''")+ "'" +
                                "、SystemSection ='" + SystemSection.Replace( "'"、 "''")+
                                "、ID ='" + CarID.Replace( "'"、 "''")+ "'" +
                                "、FixID ='" + FixID.Replace( "'"、 "''")+ "'" +
                                "、baseurl ='" + baseURL.Replace( "'"、 "''")+ "'" +
                                "、mysqlqueryName ='" + mysqlQuery.Replace( "'"、 "''")+
                                "、mysqlquery ='" + mysqlQuery.Replace( "'"、 "''")+ "'" +
                                "、Site ='AutoTrader'" +
                                "、TimeStamp = Now()";
                using(var MYSQLP = new MySQLProcessing.MySQLProcessor())
                {{
                    MYSQLP.MySQLInsertUpdate(Loggingall、 "Loggingall");
                }
            }

            public void Dispose()
            {{
                this.Dispose(true);
                GC.SuppressFinalize(this);
            }

            保護された仮想voidDispose(bool disposed)
            {{
                if(!this.Disposed)
                {{
                    if(処分)
                    {{
                        //ここでマネージドクリーンアップを実行します。

                    }

                    //ここでアンマネージドクリーンアップを実行します。

                    this.Disposed = true;
                }
            }

            保護されたboolDisposed{get; プライベートセット; }

        }
    }
}

そして、これは私がそれを呼ぶ方法です。

var options = new ParallelOptions();
options.MaxDegreeOfParallelism = 5;
                Parallel.ForEach(urlTable.AsEnumerable()、options、drow =>
            {{

using (var logClass = new LoggingClass.LoggingDisposeable()) { logClass.GenericLogging("ZipCode not available for this dealerL", "DealershipRequest", "checkExistingDealers", dealerID, "DealerShipZipCode",rDealerLink, "", ""); } }</pre>
4

1 に答える 1

2

私はあなたがやろうとしていることはこのようなものだと思います:

public class LoggingDisposeable : IDisposable
{
    MySQLProcessing MySQLP;

    public LoggingDisposeable()
    {
        MYSQLP = new MySQLProcessing.MySQLProcessor();
    }

    public void GenericLogging(string systemMsg, string SystemClass, string SystemSection, string ID, string FixID, string baseURL, string mysqlQueryName, string mysqlQuery)
    {
        string Loggingall = " insert into tblLogs " +
                        "set SystemMsg='" + systemMsg.Replace("'", "''") + "'" +
                        ",SystemClass = '" + SystemClass.Replace("'", "''") + "'" +
                        ",SystemSection = '" + SystemSection.Replace("'", "''") +
                        ",ID = '" + CarID.Replace("'", "''") + "'" +
                        ",FixID = '" + FixID.Replace("'", "''") + "'" +
                        ",baseurl = '" + baseURL.Replace("'", "''") + "'" +
                        ",mysqlqueryName = '" + mysqlQuery.Replace("'", "''") +
                        ",mysqlquery = '" + mysqlQuery.Replace("'", "''") + "'" +
                        ",Site = 'AutoTrader'" +
                        ",TimeStamp = Now()";

            MYSQLP.MySQLInsertUpdate(Loggingall, "Loggingall");                
    }

    public void Dispose()
    {
        MYSQLP.Dispose();
    }
}

次に、次のように使用します。

using (var logClass = new LoggingDisposeable())
{
    var options = new ParallelOptions();
    options.MaxDegreeOfParallelism = 5;
    Parallel.ForEach(urlTable.AsEnumerable(), options, drow =>
        {
            logClass.GenericLogging("ZipCode not available for this dealerL", "DealershipRequest", "checkExistingDealers", dealerID, "DealerShipZipCode", rDealerLink, "", "");
        });
}
于 2012-04-06T02:19:40.453 に答える