相关疑难解决方法(0)

.NET异步流读/写

我一直在尝试解决这个"并发编程"考试练习(在C#中):

知道Stream该类包含int Read(byte[] buffer, int offset, int size)void Write(byte[] buffer, int offset, int size)方法,在C#中实现NetToFile将从NetworkStream net实例接收的所有数据复制到FileStream file实例的方法.要进行传输,请使用异步读取和同步写入,以避免在读取操作期间阻塞一个线程.当net读取操作返回值0 时,传输结束.为简化起见,不必支持操作的受控取消.

void NetToFile(NetworkStream net, FileStream file);
Run Code Online (Sandbox Code Playgroud)

我一直试图解决这个问题,但我正在努力解决与问题本身相关的问题.但首先,这是我的代码:

public static void NetToFile(NetworkStream net, FileStream file) {
    byte[] buffer = new byte[4096]; // buffer with 4 kB dimension
    int offset = 0; // read/write offset
    int nBytesRead = 0; // number of bytes read on each cycle

    IAsyncResult ar;
    do {
        // …
Run Code Online (Sandbox Code Playgroud)

.net c# concurrency asynchronous

47
推荐指数
5
解决办法
7万
查看次数

使用SqlFileStream从WCF服务返回流

我有一个WCF服务,用户可以从中请求大型数据文件(存储在启用了FileStream的SQL数据库中).这些文件应该流式传输,并且在发送之前不会加载到内存中.

所以我有以下方法应该返回一个由WCF服务调用的流,以便它可以将Stream返回给客户端.

public static Stream GetData(string tableName, string columnName, string primaryKeyName, Guid primaryKey)
    {
        string sqlQuery =
            String.Format(
                "SELECT {0}.PathName(), GET_FILESTREAM_TRANSACTION_CONTEXT() FROM {1} WHERE {2} = @primaryKey", columnName, tableName, primaryKeyName);

        SqlFileStream stream;

        using (TransactionScope transactionScope = new TransactionScope())
        {
            byte[] serverTransactionContext;
            string serverPath;
            using (SqlConnection sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnString"].ToString()))
            {
                sqlConnection.Open();

                using (SqlCommand sqlCommand = new SqlCommand(sqlQuery, sqlConnection))
                {
                    sqlCommand.Parameters.Add("@primaryKey", SqlDbType.UniqueIdentifier).Value = primaryKey;

                    using (SqlDataReader sqlDataReader = sqlCommand.ExecuteReader())
                    {
                        sqlDataReader.Read();
                        serverPath = sqlDataReader.GetSqlString(0).Value;
                        serverTransactionContext = sqlDataReader.GetSqlBinary(1).Value;
                        sqlDataReader.Close();
                    }
                }
            } …
Run Code Online (Sandbox Code Playgroud)

c# sql wcf filestream

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

是Stream.Copy管道吗?

假设我正在编写tcp代理代码.我正在读取传入的流并写入输出流.我知道Stream.Copy使用缓冲区,但我的问题是:Stream.Copy方法在从输入流中获取下一个块时是否写入输出流,或者它是一个循环,如"从输入读取块,将块写入输出,从输入中读取块等"?

c# tcp stream

7
推荐指数
2
解决办法
2767
查看次数

标签 统计

c# ×3

.net ×1

asynchronous ×1

concurrency ×1

filestream ×1

sql ×1

stream ×1

tcp ×1

wcf ×1