小编Bit*_*lue的帖子

C# - 简单或复杂多线程函数的标准代理

C#中是否有标准委托,我只能用于调用.我是否必须为每个必须调用的新函数签名声明一个新委托?

现在我只有那些签名.但是,如果我可以使用本机委托来获得任何复杂的返回和参数,那将是很好的.

public bool isDone()
{...}
public void doStuff()
{...}
public void doMoreStuff(object o)
{...}
public void doEvenMoreStuff(string str)
{...}

// I'm declaring my "custom" delegates like this:
private delegate bool delegate_bool();
private delegate void delegate_void(string line);

// and calling via
if (InvokeRequired)
    Invoke(new delegate_void(doStuff), new object[] { });
else
    {...}
Run Code Online (Sandbox Code Playgroud)


编辑:答案似乎是Action <>Func <>.

if (InvokeRequired)
    return Invoke(new Func<bool>(isDone), new object[] { });
else
    {...}
if (InvokeRequired)
    BeginInvoke(new Action(doStuff), new object[] { });
else
    {...}
if …
Run Code Online (Sandbox Code Playgroud)

c# multithreading delegates signature

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

SQL语法或数据库限制?

我有2个表,每个表都有一列MNR.我想和他们一起加入这个专栏.

以下两个SQL语句失败.最后一个显示我的日期格式正在运行(更改了会话格式).DB是Oracle.

有人可以告诉我我做错了什么吗?我怎么称呼这个加入?

// fails
select a.CREATEDATE, a.BELEGNRRECH, a.MNR, a.UTNR, a.KTXT, b.ANR
from INFOR.RELFBR as a, INFOR.RELXDB as b
where (a.SAINT = '90') and (a.MNR = b.MNR) and (b.SAINT = '10')
     and (a.CREATEDATE >= '01.01.2014 00:00:00')
order by a.CREATEDATE

// fails as well
select a.CREATEDATE, a.BELEGNRRECH, a.MNR, a.UTNR, a.KTXT, b.ANR
from INFOR.RELFBR as a, INFOR.RELXDB as b
where (a.SAINT = '90') and (a.MNR = b.MNR) and (b.SAINT = '10')
order by a.CREATEDATE

// all fine
select CREATEDATE, …
Run Code Online (Sandbox Code Playgroud)

sql oracle join

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

如何在纯C#中使用PL/SQL?

我详细阐述了这段小代码,开始了我的宝贝步骤.连接很好.简单的OdbcDataReader选择工作正常.但我无法测试任何PL/SQL函数.它是如何工作的 ?我是否需要额外安装或者我做错了什么?

一些灵感

using System;
using System.Data.Odbc;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string connectionString = "dsn=TEST;uid=read;pwd=___";
            OdbcConnection con = new OdbcConnection(connectionString);
            con.Open();

            try
            {
                OdbcCommand cmd = new OdbcCommand("begin end;", con);
                int result = cmd.ExecuteNonQuery();
                cmd.Dispose();
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);
            }

            con.Close();
            con.Dispose();

            Console.ReadKey();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

PL/SQL程序显然是:

begin
end;
Run Code Online (Sandbox Code Playgroud)

错误消息如下:

System.Data.Odbc.OdbcException (0x80131937): ERROR [HY000] [Oracle][ODBC][Ora]OR
A-06550: line 1, column 7:
PLS-00103: Encountered the symbol "END" when expecting one of …
Run Code Online (Sandbox Code Playgroud)

c# sql oracle plsql

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

C - 释放一定数量的内存(char**)

我必须安全地释放一个数组:char** a;它就像一个字符串列表.我知道char*我有多少人.但我无法释放所有内存.有没有像我可以用来释放20个字节的功能?我试过了:

for (int i = 0; i < length; i++)
    if (a[i] != null)
        free(a[i]); // some of a[i] ARE null, non-null have different sizes
free(a); // crashes here
Run Code Online (Sandbox Code Playgroud)

但我通过asm调试得到运行时错误.a中的所有东西都已经过了.对于一个I malloced 5个字符串(每个指针4个字节) - > 20个字节.我如何解放整个char**

c memory arrays free

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

如何用另一个字符串覆盖一个字符串?

如何覆盖字符串?例:

string text = "abcdefghijklmnopqrstuvwxyz".OverwriteWith("hello world", 3);
// text == "abchello worldopqrstuvwxyz"
Run Code Online (Sandbox Code Playgroud)

当然这种方法不存在.但

  • .NET Framework中是否有内置的东西?
  • 如果没有,我怎样才能有效地将字符串写入另一个字符串?

c# string overwrite

-3
推荐指数
2
解决办法
2475
查看次数

标签 统计

c# ×3

oracle ×2

sql ×2

arrays ×1

c ×1

delegates ×1

free ×1

join ×1

memory ×1

multithreading ×1

overwrite ×1

plsql ×1

signature ×1

string ×1