Gil,
First, you should look into using NI-Device, a driver written for our PCI-GPIB cards exactly for this purpose. It won't work with C#, it's C++ only, but you may find it interesting.
The only way I can think of to do this in the C# .NET Language Interface is using the Board object and doing board.wait(LACS) and board.wait(TACS) to see when you're addressed as a listener or a talker respectively (you could use Notify if you wanted). You can set the address with board with the PrimaryAddress property. When the board is addressed as a talker, send data. When it's a listener, read data. It's sufficient for doing very simple read/write sorts of things, but gets complicated when you have SRQ's, clears, and more advanced GPIB stuff going on.
Hope this helps.
Scott B.
GPIB Software
National Instruments