小编Cyf*_*r13的帖子

byte []并通过引用有效传递

因此,这与处理大对象堆并尝试最小化实例化byte []的次数有关.基本上,我有OutOfMemoryExceptions,我觉得这是因为我们实例化了太多的字节数组.当我们处理几个文件时,程序工作正常,但它需要扩展,目前它不能.

简而言之,我有一个从数据库中提取文档的循环.目前,它一次拉一个文档然后处理文档.文件的范围可以从小于1兆欧卡到400欧元不等.(因此我为什么一次处理一个).以下是伪代码,在我进行优化之前.

所以我正在做的步骤是:

  1. 调用数据库以查找最大文件大小(然后将其乘以1.1)

    var maxDataSize = new BiztalkBinariesData().GetMaxFileSize();
    maxDataSize = (maxDataSize != null && maxDataSize > 0)
        ? (long)(maxDataSize * 1.1)
        : 0;
    var FileToProcess = new byte[maxDataSize];
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后我进行另一个数据库调用,从数据库中提取所有文档(没有数据)并将它们放入IEnumerable中.

    UnprocessedDocuments =
        claimDocumentData.Select(StatusCodes.CurrentStatus.WaitingToBeProcessed);
    foreach (var currentDocument in UnprocessDocuments)
    {
         // all of the following code goes here
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 然后我从外部源填充我的byte []数组:

    FileToProcess = new BiztalkBinariesData()
        .Get(currentDocument.SubmissionSetId, currentDocument.FullFileName);
    
    Run Code Online (Sandbox Code Playgroud)
  4. 这是个问题.将currentDocument(IClaimDocument)传递给其他要处理的方法会更加清晰.因此,如果我将currentDocument的数据部分设置为预格式化的数组,那么这将使用现有的引用吗?或者这会在大对象堆中创建一个新数组吗?

    currentDocument.Data = FileToProcess;
    
    Run Code Online (Sandbox Code Playgroud)
  5. 在循环结束时,我会清除FileToProcess

    Array.Clear(FileToProcess, 0, FileToProcess.length);
    
    Run Code Online (Sandbox Code Playgroud)

那清楚了吗?如果没有,我会尽力清理它.

c# asp.net bytearray out-of-memory c#-3.0

5
推荐指数
3
解决办法
3199
查看次数

哪种连接数据库的效率更高?

和同事有分歧,而我此时并不关心谁是对的,我更好奇哪个是更好的解决方案,以便我可以继续使用它.

我们有不同的方式来访问系统.

选项#1: 使用以下代码创建数据库.

using Microsoft.Practices.EnterpriseLibrary.Data;

namespace Ivans.Healthcare.CommercialAccess.Data
{
    public abstract class DataAccess : DataHelperBase
    {
        public const int commandTimeout = 7200;
        private static Database m_db = null;
        public StringBuilder Status {get; set;}

        public DataAccess()
        {
            this.Status = new StringBuilder();

            if (m_db == null)
            {
                bool bIfRunsOnWebService = false;
                try
                {
                    if (DynamicConfigurationManager.AppSettings["WebService"] != null)
                    {
                        bIfRunsOnWebService = true;
                    }
                }
                catch {}

                if (!bIfRunsOnWebService)
                {
                    m_db = DatabaseFactory.CreateDatabase(DataAccessResource.IDS_DB_ALIAS);
                }
                else
                {
                    m_db = CreateDatabase(DataAccessResource.IDS_WS_DB_ALIAS);
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

然后每次需要调用存储过程时,该方法将包含如下内容:

public …
Run Code Online (Sandbox Code Playgroud)

c# sql-server asp.net coding-style data-access-layer

3
推荐指数
1
解决办法
707
查看次数

试图通过使用Singleton来确定此代码是否会带来任何好处

我正在开发一个项目,其中一个联合开发人员(和以前的开发人员)使用Singleton/Facade几乎每个页面的内部都有很多方法调用,但实际上并没有维护数据.

例如:

public class FooFacade
{
    private static FooFacade m_facade = null;
    private static DataAccessManager m_dataAccessMgr = null;

    public StringBuilder Status {get; set; }

    private FooFacade()
    {
        this.Status = new StringBuilder();
    }

    public static FooFacade getInstance()
    {
        if (m_facade == null)
        {
            m_dataAccessMgr = DataAccessManager.getInstance();
            m_facade = new FooFacade();
        }

        return m_facade;
    }

    public void clearStatus()
    {
        this.Status.Remove(0, Status.Length);
    }

 public void Method1(string value1, int value2)
    {
     // DO SOMETHING
    }


 public List<string> Method2(string value1, int value2)
    {
     // DO …
Run Code Online (Sandbox Code Playgroud)

c# asp.net singleton design-patterns facade

3
推荐指数
1
解决办法
130
查看次数

获得警告,'类型参数X隐藏接口X'

这是在Visual Studio 2010中发生的.

我正在使用泛型方法,基本上失去了我的智能感知并阻止我继续这个项目的工作.

我基本上有以下课程:

public class SearchRepository : DataRepository<IAudit>
{
    public override IEnumerable<IAudit> RetrieveAll<IAuditSearch>(IAuditSearch searchParameters)
    {
        // CODE GOES HERE
    }

    public override bool Delete<TIAudit>(IAudit audit)
    {
        // CODE GOES HERE
    }
}
Run Code Online (Sandbox Code Playgroud)

这继承自:

public abstract class DataRepository<T>
{
    public virtual IEnumerable<T> RetrieveAll<U>(U parameter1)
    {
        throw new NotImplementedException();
    }

    public virtual bool Delete<U>(U parameter1)
    {
        throw new NotImplementedException();
    }
}
Run Code Online (Sandbox Code Playgroud)

所以删除工作正是我期望它工作的方式.我有intellisense,它编译正确.使用IAuditSearch,RetrieveAll无法正常工作.如果我将其更改为TIAuditSearch,那么它说我"没有合适的方法来覆盖".

不知道我做错了什么,但对我来说肯定不满意.

更新:更改虚拟以覆盖顶部的Delete方法.那是个错误.

c# asp.net generics interface

2
推荐指数
1
解决办法
2856
查看次数

需要将字符串拆分为子字符串但不能使用拆分

我有一个看起来像这样的字符串:

123.45.67.890-1292通过10.98.765.432-4300连接到EDS.

我需要像这样分开它:

   "123.45.67.890-1292 connected to EDS via 10.98.765.432-4300."
    -----+------- --+-              -+-     -----+------- --+-
         |          |                |           |          |
  ClientIP          |      ServiceName      HostIP          |
                    |                                       |
        ClientSession                             HostSession
Run Code Online (Sandbox Code Playgroud)

我正在从具有许多复杂InStr方法的vbscript转换代码.想知道是否有办法使用regEx来做到这一点.

c# regex asp.net

1
推荐指数
1
解决办法
325
查看次数